Добавлено: Сб янв 14, 2012 17:40
А что "интересно" ? Вывести на панель?
Чтобы доверять автоматике перемещение, нужно быть уверенным на 120%
Чтобы доверять автоматике перемещение, нужно быть уверенным на 120%
Форум поддержки пользователей Total Commander
https://forum.wincmd.ru/
Это меня навело на мысль, но, как я уже сказал, в скриптах не силенFlasher писал(а):А это ни о чём не говорит?:Flasher писал(а):проще один из имеющихся скриптов перемещения на уровень вверх подлатать
Не годятся, т.к. все архивы уже распакованы, а называются папки непредсказуемо, названия вложенных вообще могут не совпадать с названием корневой.Flasher писал(а):Я вижу пока следующие пути решения вопроса:
1) Поскольку при распаковке имя директории соответвует базовому имени архива, можно сравнивать её имя с именем находящейся внутри неё директории, допустим, по каким-то первым символам, и если они совпадают, то содержимое должно перемещаться наверх. Тут же можно проверять наличии файлов с определённым расширением.
2) Распаковать все архивы заново с присвоением одинакового комментария папкам. По тому комментарию отслеживать папки с вышеописанными условиями и перемещать.
Наверное, один из этих способов, но я не совсем понимаю, в чем разница. Точно могу сказать, что автоперемещение можно применять только после ручной проверки найденных папок. Иначе может получиться, например, что файлы из папки "Иванов, А.\Вечный зов" переместятся в папку "Иванов, А.", а этого мне не надо.Flasher писал(а):3) Организовать поиск через Script Content Plugin, самостоятельно проверить найденные по заданному изначально критерию папки, потом воспользоваться скриптом автоперемещения.
4) Воспользоваться обычным поиском папок с заданной глубиной расположения этих распакованных директорий. Задача скрипта будет выделить нужные папки для самостоятельной проверки на пригодность для последующего перемещения наверх.
Это плохо.Darkenlightener писал(а):а называются папки непредсказуемо
В способе поиска, и, соответсвенно, в получении результатов. Для 3-го варианта нужно писать контент-скрипт для указанного плагина с последующим подставлением данных на вкладке "Плагины", а для 4-го - скрипт выделения нужных папок в выделенном списке режима "Файлы на панель" после обычного поиска.Darkenlightener писал(а):но я не совсем понимаю, в чем разница
ищется от текущей и глубжеDarkenlightener писал(а):как его можно доработать, чтобы я мог вручную изменять уровень вложенности, на котором надо искать?(
Код: Выделить всё
With CreateObject("Scripting.FileSystemObject")
If .GetFolder(FileName).Files.Count = 0 And .GetFolder(FileName).Subfolders.Count = 1 Then
For Each F in .GetFolder(FileName).Subfolders
If F.Size > 0 Then Content = 1
Next
End If
End WithКод: Выделить всё
[Script]
Section=Dir
[Dir]
Script=Script.vbs
LongName=1
ParseDirs=1Я для того вопрос и задал. Сейчас посмотрю, что там надо поправить.Darkenlightener писал(а):Скрипт по ссылке никаких результатов не дал мне, я попробовал. Имя должно остаться родительской папки.
Ещё раз:Darkenlightener писал(а):потому что их все равно приходится просматривать и проверять во второй панели, и автоматическое перемещение не имеет смысла делать
Ctrl+Влево/Вправо в зависимости от местоположения результатов, проверил - выделил, проверил - выделил, закончил выделять - воспользовался скриптом.Flasher писал(а):самостоятельно проверить найденные по заданному изначально критерию папки, потом воспользоваться скриптом автоперемещения
Код: Выделить всё
'====================================================
' Перемещение содержимого подкаталогов
' внутри выделенных папок на уровень вверх
' Параметры: %L
'====================================================
With CreateObject("Scripting.FileSystemObject")
Set TempFile = .OpenTextFile(WScript.Arguments(0), 1)
Do While Not TempFile.AtEndOfStream
N = TempFile.ReadLine
If .FolderExists(N) Then
Set FF = .GetFolder(N)
For Each Fd In FF.SubFolders
For Each F In Fd.SubFolders
If Not .FolderExists(N & .GetFileName(F)) Then F.Move N
Next
For Each F In Fd.Files
If Not .FileExists(N & .GetFileName(F)) Then F.Move N
Next
If Fd.Size = 0 Then Fd.Delete
Next
End If
Loop
End With
TempFile.Close
Wscript.Quit