Ru-Board.club
← Вернуться в раздел «Программы»

» Total Commander (Часть 8)

Автор: aleksktor
Дата сообщения: 06.10.2015 11:19
c930 большое спасибо за ответ! Сразу же все нашел и сделал как указано. Получилось именно что хотел!
Kvasar тоже спасибо! Попробовал и этот вариант - тоже работает. Также сохраню в заметках об ТК.
Автор: zheka100pudov
Дата сообщения: 09.10.2015 21:16
Занимался перемещением файлов в этой программе, потом обнаружил что общая папка, в которой я этим занимался, увеличилась в два раза(как по весу так и по количеству файлов, и я работал не со всеми фалами). Просто так не видно что там, можно ли как нибудь обнаружить эти копии?
Автор: c930
Дата сообщения: 09.10.2015 22:16
zheka100pudov
Alt+F7 (Поиск файлов) > Дополнительно (вторая вкладка) > Поиск дубликатов (чекбокс в нижнем поле) > ну и дочерние чекбоксы - по вкусу.
Автор: Samotek
Дата сообщения: 10.10.2015 00:51
Подскажите, пожалуйста, если в параметрах кнопки задано %UL куда записывается этот файл со списком и его формат? Хочу понять как он заполняется для вызова TeraCopy из батника
Автор: iNNOKENTIY21
Дата сообщения: 10.10.2015 01:10
Samotek

%L, %l, %F, %f, %D, %d, %WL, %WF, %UL, %UF
Создаёт файл списка в каталоге, заданном переменной TEMP

См. справку: Диалоговое окно: Конфигурация: Панель инструментов
Автор: Samotek
Дата сообщения: 10.10.2015 01:19
iNNOKENTIY21

Цитата:
Создаёт файл списка в каталоге, заданном переменной TEMP

Спасибо
Автор: aidarsimon
Дата сообщения: 10.10.2015 20:01
Здравствуйте. Нужно в инструменте "групповое переименование файлов" вставить текущую дату, как это сделать?
Автор: vapod
Дата сообщения: 10.10.2015 20:09
aidarsimon

Не оно?

Автор: Userrr
Дата сообщения: 10.10.2015 21:31
WTF поиск не находит папку, а вот если ввести название в адресной строке, то 'не найденная' папка внезапно открывается. папок ~35 тыс.
Автор: oshizelly
Дата сообщения: 11.10.2015 01:40
Попробовал использовать TC для копирования данных (клонирования системного раздела) с диска, подключенного к машине по USB в качестве внешнего (поскольку более специализированного софта сейчас под рукой не оказалось). Исходный диск - системный раздел Windows' 7 x64. И сам компьютер, на котором производилась операция копирования, тоже работает под Windows' 7 x64. Оба, естественно, используют NTFS.

Внезапно (C) вместо стандартных символических ссылок (symlinks) вроде C:\Users, C:\Documents and Settings\ и их дочерних папок/ссылок с исходного клонируемого диска на целевой диск были скопированы реальные папки и файлы с системного раздела хостового компьютера, к которому был подключён копируемый внешний диск То есть, скопировались данные, не имеющие ни малейшего отношения к копируемому диску.

Ну, в общих чертах я примерно догадываюсь, почему так получилось. Вопрос в другом: как избежать такого эффекта?

Заранее спасибо!

Добавлено:
Кстати, а как увидеть полный список всех папок, к которым не удалось получить доступ в ходе операции копирования? В окне сообщения об ошибке, выскакивающем в конце операции, умещается всего 25 строк (для сомневающихся прикладываю скриншот), а проблемных папок может оказаться гораздо больше.

Автор: Skif_off
Дата сообщения: 11.10.2015 02:49
oshizelly

Цитата:
как избежать такого эффекта?

Использовать диалог синхронизации с SyncIgnoreJunctions=1?
Или шаблон в типах файлов в диалоге копирования: поиск с плагинами/Плагин tc->Свойство Тип файла->Операция !=-> Значение Символическая ссылка.

Добавлено:

Цитата:
Кстати, а как увидеть полный список всех папок, к которым не удалось получить доступ в ходе операции копирования?

Натройки/Файл отчёта, подберите подходящие опции (действия и статус).
Автор: Avada
Дата сообщения: 11.10.2015 10:11
Userrr

Цитата:
поиск не находит папку

При каких условиях поиска? Можно поконкретнее?
Автор: oshizelly
Дата сообщения: 11.10.2015 10:15
Skif_off 02:49 11-10-2015
Цитата:
Использовать диалог синхронизации с SyncIgnoreJunctions=1.
Или шаблон в типах файлов в диалоге копирования: поиск с плагинами / Плагин tc -> Свойство: Тип файла -> Операция: != -> Значение: Символическая ссылка.

Прошу прощения, не сумел внятно сформулировать свой вопрос При копировании данных с системного раздела задача не том, чтобы просто полностью проигнорировать все символические ссылки. А именно это достигается при использовании обоих ваших рецептов. В этом случае структура данных диска-источника окажется на диске-приёмнике воспроизведена неточно, и такой диск не получится использовать в качестве системного раздела.

Задача заключается в том, чтобы скопировать символические ссылки на диск-приёмник именно в качестве ссылок, не заменяя их реальным содержимым. То есть, зеркально точно воспроизвести структуру папок и символических ссылок диска-источника на диске-приёмнике, чтобы можно было его потом использовать в качестве системного. Или TC такого не умеет?
Автор: Userrr
Дата сообщения: 11.10.2015 10:21
Avada


хотя соответствующих папок 20 шт.
Автор: Avada
Дата сообщения: 11.10.2015 12:49
Userrr
От числа объектов в папке успешность поиска зависит? На остальных страницах нет ничего, ограничивающего поиск именно папок?

oshizelly
Вообще-то существует ключ CopyLinks (см. английскую справку TC 8.5x или подробное русское описание в Ultra TC Configuration Editor).
Автор: Userrr
Дата сообщения: 11.10.2015 13:03

Цитата:
На остальных страницах нет ничего, ограничивающего поиск именно папок?

ничего нет. ТС не ищет только именно в этой папке (может дофига для него папок + это примонтированный сетевой диск) не помню, но по-моему затык у него начался, когда кол-во папок перевалило за 20 тыс. какя-то у него 'хитрая' система индексации/кэширования



Добавлено:
'копировать имена файлов в буфер' 32157 он скопировал, значит папки видит, а тупит где-то в другом месте

Добавлено:
Everything нашёл их без труда
Автор: aidarsimon
Дата сообщения: 11.10.2015 15:21

Цитата:
aidarsimon
 
Не оно?

Нет, не оно. На вашем скрине поставится дата изменения, а нужно текущую дату. Например 11.10.2015
Автор: yozhic
Дата сообщения: 11.10.2015 15:56
aidarsimon
Насколько я знаю, народ это скриптами делает. В TCIMG есть такой функционал (в числе других многочисленных). Я, например, себе сделал [more=такую поделку на AutoIt]

Код:
#comments-start ;===================================================================================;
Скрипт: Simple Rename
Версия скрипта: 1.3.2
Создан / Изменён: 08.07.2015 / 02.10.2015
Версия AutoIt: 3.3.8.1
Автор / Адрес: yozhic / forum.ru-board.com
Соглашение: Никаких гарантий и ответственности. Делайте со скриптом, что хотите.
Параметры запуска: ( %WL | %UL | %L ) — первый обязательный параметр. Список объектов
(файлов, папок). Передаётся из Total Commander.
/FR="ТекстДляПоиска//ТекстДляЗамены"
/FRE="ШаблонДляПоиска//ШаблонДляЗамены"
/PF="ПрефиксТекст"
/SF="СуффиксТекст"
/DATE($Y$M$D)
Пример: AutoIt.exe rens.au3 %UL /FRE="(-20\d{6})?$//" /SF="-/DATE($Y-$M-$D)
удалит дату (если есть) в конце имени и поставит текущую с дефисами.
Описание: Переименование объектов по списку. Порядок следования параметров — свободный
(кроме первого). Параметры обрабатываются в порядке очереди, т.е. если после
добавления текста выполнить замену, то она коснётся также и добавленного текста.
#comments-end ;=====================================================================================;

#Region >>> DIRECTIVES =============================================================================|
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 6 -w 7
#AutoIt3Wrapper_Run_Debug_Mode=N
#EndRegion >>> DIRECTIVES ==========================================================================|

#Region >>> INCLUDES ===============================================================================|
#include <File.au3>
#include <FileOperations.au3>
#EndRegion >>> INCLUDES ============================================================================|

#Region >>> OPTIONS ================================================================================|
#NoTrayIcon
#EndRegion >>> OPTIONS =============================================================================|

#Region >>> DECLARATIONS ===========================================================================|
Global Const $csTITLE = 'Simple Rename'
Global Const $csINI = @ScriptDir &'\'& StringTrimRight(@ScriptName,4) &'.ini'
Global Const $csApprovedExt = 'tmp'
Global $gaFileList, $gaSplittedSourceName, $gsSourceName, $gsResultName
;~ объявляем массив параметров переименования с количеством строк по количеству параметров
;~ КМС минус список объектов
If $CmdLine[0] > 0 Then
Global $gaRenParams[$CmdLine[0]][3]
Else
MsgBox(48+262144, $csTITLE, "The script is designed to be run with command-line parameters." & _
@LF&@LF& "Please, read the comments inside the script.")
Exit
EndIf
#EndRegion >>> DECLARATIONS ========================================================================|

#Region >>> MAIN PROCEDURE =========================================================================|
;~ Если ini не существует, создаём его
If Not FileExists($csINI) Then fn_IniCreate()

;~ Проверяем является ли первый параметр списком файлом
;~ Проверка осуществляется по расширению: числится ли в списке разрешённых расширений в ini
If StringRegExp(IniRead($csINI,'Main','ListExt','tmp'), '\b'& StringRight($CmdLine[1],3) &'\b') Then
Else
MsgBox(48+262144, $csTITLE, "It seems that the 1st parameter is not a file list." &@LF& _
"Check the ini-file for approved file list extensions." &@LF&@LF& _
'Approved extensions: ' & IniRead($csINI,'Main','ListExt','tmp') &@LF& _
'Current file list extension: ' & StringRight($CmdLine[1],3))
Exit
EndIf

;~ Считываем в массив список объектов для переименования
If Not _FileReadToArray($CmdLine[1], $gaFileList) Then
MsgBox(48+262144, $csTITLE, "Error of reading list to array." &@LF& "Error Code: " & @error)
Exit
EndIf

;~ Считываем в массив параметры переименования
$gaRenParams[0][0] = $CmdLine[0]-1
For $i = 2 To $CmdLine[0]
If StringRegExp($CmdLine[$i], "^/PF=") Then fn_AddPrefix(0, $i-1, $CmdLine[$i])
If StringRegExp($CmdLine[$i], "^/SF=") Then fn_AddSuffix(0, $i-1, $CmdLine[$i])
If StringRegExp($CmdLine[$i], "^/FR=") Then fn_FindReplace(0, $i-1, $CmdLine[$i])
If StringRegExp($CmdLine[$i], "^/FRE=") Then fn_FindReplaceRE(0, $i-1, $CmdLine[$i])
Next

;~ обрабатываем по очереди каждый объект
For $n = 1 To $gaFileList[0]
;~ если объект — папка, то удаляем слэш в конце имени
If StringRight($gaFileList[$n],1) = '\' Then $gaFileList[$n] = StringTrimRight($gaFileList[$n],1)
$gsSourceName = $gaFileList[$n]
;~ разбиваем полный путь на путь, имя, расширение
$gaSplittedSourceName = _FO_PathSplit($gaFileList[$n])
$gsResultName = $gaSplittedSourceName[1]

;~ каждое имя обрабатываем данными из массива параметров переименования
For $i = 1 To $gaRenParams[0][0]
If $gaRenParams[$i][0] = "PF" Then fn_AddPrefix(1, $i)
If $gaRenParams[$i][0] = "SF" Then fn_AddSuffix(1, $i)
If $gaRenParams[$i][0] = "FR" Then fn_FindReplace(1, $i)
If $gaRenParams[$i][0] = "FRE" Then fn_FindReplaceRE(1, $i)
Next

;~ добавляем к новому имени расширение и переименовываем
$gsResultName = $gsResultName & $gaSplittedSourceName[2]
_FO_FileDirReName($gsSourceName, $gsResultName)
Next
#EndRegion >>> MAIN PROCEDURE ======================================================================|

#Region >>> FUNCTIONS ==============================================================================|
Func fn_InsertDate($s)
Local $a, $sr
While StringRegExp($s, "(?<!\\)/DATE")
$a = StringRegExp($s, "(?<!\\)/DATE\(.+?\)", 1)
$sr = StringRegExpReplace($a[0], "(/DATE\(|\))", "")
$sr = StringReplace($sr, "$Y", @YEAR, 0, 1)
$sr = StringReplace($sr, "$M", @MON, 0, 1)
$sr = StringReplace($sr, "$D", @MDAY, 0, 1)
$s = StringReplace($s, $a[0], $sr, 0, 1)
WEnd
Return $s
EndFunc ; ### fn_InsertDate ### ------------------------------------------------------------------- ;

Func fn_FindReplace($flag, $i, $s = 0)
;~ $flag - переключает работу функции для наполнения массива (0) или обработки строк (1)
;~ $i - передаёт номер строки массива
;~ $s - передаёт строку для обработки, необходим только при $flag = 0
If $flag = 0 Then
Local $a
$s = fn_InsertDate($s)
$gaRenParams[$i][0] = "FR"
$a = StringRegExp($s, "(?<!\\)(?<=/FR=).+?(?<!\\)(?=//)", 1)
$gaRenParams[$i][1] = $a[0]
$a = StringRegExp($s, "(?<=//).*$", 1)
$gaRenParams[$i][2] = $a[0]
Else
$gsResultName = StringReplace($gsResultName, $gaRenParams[$i][1], $gaRenParams[$i][2])
EndIf
EndFunc ; ### fn_FindReplace ### ------------------------------------------------------------------ ;

Func fn_FindReplaceRE($flag, $i, $s = 0)
;~ объяснение параметров см. в fn_FindReplace()
If $flag = 0 Then
Local $a
$s = fn_InsertDate($s)
$gaRenParams[$i][0] = "FRE"
$a = StringRegExp($s, "(?<!\\)(?<=/FRE=).+?(?<!\\)(?=//)", 1)
$gaRenParams[$i][1] = $a[0]
$a = StringRegExp($s, "(?<=//).*$", 1)
$gaRenParams[$i][2] = $a[0]
Else
$gsResultName = StringRegExpReplace($gsResultName, $gaRenParams[$i][1], $gaRenParams[$i][2])
EndIf
EndFunc ; ### fn_FindReplaceRE ### ---------------------------------------------------------------- ;

Func fn_AddSuffix($flag, $i, $s = 0)
;~ объяснение параметров см. в fn_FindReplace()
If $flag = 0 Then
Local $a
$s = fn_InsertDate($s)
$gaRenParams[$i][0] = "SF"
$a = StringRegExp($s, "(?<!\\)(?<=/SF=).+$", 1)
$gaRenParams[$i][1] = $a[0]
Else
$gsResultName = $gsResultName & $gaRenParams[$i][1]
EndIf
EndFunc ; ### fn_AddSuffix ### -------------------------------------------------------------------- ;

Func fn_AddPrefix($flag, $i, $s = 0)
;~ объяснение параметров см. в fn_FindReplace()
If $flag = 0 Then
Local $a
$s = fn_InsertDate($s)
$gaRenParams[$i][0] = "PF"
$a = StringRegExp($s, "(?<!\\)(?<=/PF=).+$", 1)
$gaRenParams[$i][1] = $a[0]
Else
$gsResultName = $gaRenParams[$i][1] & $gsResultName
EndIf
EndFunc ; ### fn_AddPrefix ### -------------------------------------------------------------------- ;

Func fn_IniCreate()
Local $h
$h = FileOpen($csINI, 33)
FileWriteLine($h, '[Main]')
FileWriteLine($h, 'ListExt=' & $csApprovedExt)
FileClose($h)
EndFunc ; ### fn_IniCreate ### -------------------------------------------------------------------- ;
#EndRegion >>> FUNCTIONS ===========================================================================|
; ============================================ Made in AkelPad ==================================== ;
; ================================================= КИБНС ========================================= ;
Автор: c930
Дата сообщения: 11.10.2015 16:09
aidarsimon
А почему нельзя ручками набрать дату то? Несколько символов.
Автор: Viper25
Дата сообщения: 12.10.2015 09:09
Как увеличить размер значков файлов
Автор: Avada
Дата сообщения: 12.10.2015 09:51
Viper25
Заглянуть на эту страницу настроек ("Размер значков"). В новых версиях TC предлагается 5 вариантов.
Автор: Viper25
Дата сообщения: 12.10.2015 10:07
Еще вопрос: "Как запомнить позицию и размер окна"?
А то каждый раз окно открывается в полном размере.
Автор: Avada
Дата сообщения: 12.10.2015 10:14
aidarsimon
К вышесказанному добавлю, что вставку текущих даты/времени (как и многого другого) в различных областях интерфейса TC, включая и ИГП, можно организовать и через TCDirMenu — дочерний плагин TWinKey. Подробности в справке основного плагина.

Viper25
И опять — справка. Если файл с настройками TC доступен для записи, разумеется. 100500 раз отвечалось.
Автор: BVV63
Дата сообщения: 12.10.2015 10:28
Viper25
1. Убедиться, что Ini-файл не защищён от записи.
2. Убедиться, что в свойстве ярлыка TC не указан полноэкранный размер окна программы.
3. Убедиться, что в настройках TC не указано, чтобы окно открывалось во весь экран (где это в настройках не знаю, не нашёл, в Ini-файле это определяется параметром "Maximized" в секции настроек данных, зависящих от разрешения экрана и размера шрифта.
4. Выбрать в главном меню "Конфигурация" -> "Сохранить позицию".
Автор: Avada
Дата сообщения: 12.10.2015 10:56
BVV63

Цитата:
3. Убедиться, что в настройках TC не указано, чтобы окно открывалось во весь экран (где это в настройках не знаю, не нашёл, в Ini-файле это определяется параметром "Maximized" в секции настроек данных, зависящих от разрешения экрана и размера шрифта.

Избыточное действие. При соответствующем разрешении достаточно изменить кнопкой/командой в заголовке окна TC размер на оконный и сохранить позицию.
Автор: vmbvmb
Дата сообщения: 12.10.2015 14:08
Не знает ли кто способа добавить номера страниц при печати из Листера?
Автор: Avada
Дата сообщения: 12.10.2015 16:49
vmbvmb
Нет способа. Листер постраничную разбивку не выполняет.
Автор: vmbvmb
Дата сообщения: 12.10.2015 17:06
Avada
В каком смысле не выполняет? Я вот печатаю из него огромные файлы в PDF, он разбивает на страницы, ставит их в очередь. Но номера вставить не получается.
Автор: Avada
Дата сообщения: 12.10.2015 17:51
vmbvmb
Прямо-таки из него или всё же из какого-то плагина? Чистый Листер работу с PDF не поддерживает.
Автор: oshizelly
Дата сообщения: 12.10.2015 18:17
Задам вопрос, который всплывает здесь почти после каждой мажорной версии TC. В последние пару лет вроде ещё не задавали Можно ли как-то сохранить (экспортировать) или скопировать в буфер обмена результат сравнения из окна Synchronize Directories? Не по одной строке, это понятно, а все целиком? Сам я пока что нашёл единственный способ: выделить весь список и "распечатать" на виртуальный PDF-принтер. Но это кажется уж очень неуклюжим, неужели нет более изящного решения?



Добавлено:
Avada 17:51 12-10-2015
Цитата:
Прямо-таки из него или всё же из какого-то плагина? Чистый Листер работу с PDF не поддерживает.

[b]vmbvmb[/b] имеет в виду распечатку на виртуальный PDF-принтер, что можно сделать из любого окна любого приложения - и Lister здесь не исключение. Для этого никакой плагин не нужен. Но требуется плагин, чтобы открыть PDF в окне Lister, таких есть много несколько штук: SumatraPDF, IE View и т.п. IMHO для ответа на вопрос vmbvmb не имеет значения, какой именно из них используется.
Прошу прощения, невнимательно прочёл пост vmbvmb, поэтому глупость написал. Вы правы, как обычно...

vmbvmb17:06 12-10-2015
Цитата:
Я вот печатаю из него огромные файлы в PDF, он разбивает на страницы, ставит их в очередь. Но номера вставить не получается.

Документ PDF уже разбит на страницы, его не нужно снова разбивать при печати. Как видите в окне, так и напечатается.
Соответственно, ищите настройки нумерации страниц в настройках используемой программы для печати. Либо печатайте PDF-ы из такой проги, которая поддерживает автоматическую расстановку номеров страниц.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176

Предыдущая тема: Распечатка брошюры в Word 2003


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.