Страница 5 из 8

Добавлено: Сб янв 14, 2012 17:40
Tol!k
А что "интересно" ? Вывести на панель?
Чтобы доверять автоматике перемещение, нужно быть уверенным на 120%

Добавлено: Сб янв 14, 2012 17:44
Flasher
Вообще-то я варианты выше написал. Список - это слишком просто..

Добавлено: Сб янв 14, 2012 18:26
Darkenlightener
Flasher писал(а):А это ни о чём не говорит?:
Flasher писал(а):проще один из имеющихся скриптов перемещения на уровень вверх подлатать
Это меня навело на мысль, но, как я уже сказал, в скриптах не силен
Flasher писал(а):Я вижу пока следующие пути решения вопроса:
1) Поскольку при распаковке имя директории соответвует базовому имени архива, можно сравнивать её имя с именем находящейся внутри неё директории, допустим, по каким-то первым символам, и если они совпадают, то содержимое должно перемещаться наверх. Тут же можно проверять наличии файлов с определённым расширением.
2) Распаковать все архивы заново с присвоением одинакового комментария папкам. По тому комментарию отслеживать папки с вышеописанными условиями и перемещать.
Не годятся, т.к. все архивы уже распакованы, а называются папки непредсказуемо, названия вложенных вообще могут не совпадать с названием корневой.
Flasher писал(а):3) Организовать поиск через Script Content Plugin, самостоятельно проверить найденные по заданному изначально критерию папки, потом воспользоваться скриптом автоперемещения.
4) Воспользоваться обычным поиском папок с заданной глубиной расположения этих распакованных директорий. Задача скрипта будет выделить нужные папки для самостоятельной проверки на пригодность для последующего перемещения наверх.
Наверное, один из этих способов, но я не совсем понимаю, в чем разница. Точно могу сказать, что автоперемещение можно применять только после ручной проверки найденных папок. Иначе может получиться, например, что файлы из папки "Иванов, А.\Вечный зов" переместятся в папку "Иванов, А.", а этого мне не надо.
Tol!k
Наверное, этот скрипт подойдет, но как его можно доработать, чтобы я мог вручную изменять уровень вложенности, на котором надо искать?

Идеальное решение, наверное, поиск всех таких папок, проверка, отбор нужных и автоперемещение, т.е. способ 3 или 4, но я не могу выбрать нужный по причине ламерства :(

Добавлено: Сб янв 14, 2012 18:44
Flasher
Darkenlightener писал(а):а называются папки непредсказуемо
Это плохо.
Darkenlightener писал(а):но я не совсем понимаю, в чем разница
В способе поиска, и, соответсвенно, в получении результатов. Для 3-го варианта нужно писать контент-скрипт для указанного плагина с последующим подставлением данных на вкладке "Плагины", а для 4-го - скрипт выделения нужных папок в выделенном списке режима "Файлы на панель" после обычного поиска.

Добавлено: Сб янв 14, 2012 19:00
Tol!k
Darkenlightener писал(а):как его можно доработать, чтобы я мог вручную изменять уровень вложенности, на котором надо искать?(
ищется от текущей и глубже

Добавлено: Сб янв 14, 2012 19:12
Darkenlightener
Tol!k
Скрипт я скопировал, запустил, TC сообщает:

"Cцeнapий: e:\Пecoчницa\backup\Toлькo 1 пaпкa и 0 фaйлoв нa пepвoм ypoвнe влoжeннocти.vbs
Cтpoкa: 1
Cимвoл: 1
Oшибкa: Heдoпycтимый знaк
Кoд: 800A0408
Иcтoчник: Oшибкa кoмпиляции Microsoft VBScript"

Что делать?

Добавлено: Сб янв 14, 2012 19:17
Tol!k
сохранить с расш. .cmd

Добавлено: Сб янв 14, 2012 20:16
Flasher
Darkenlightener
1. Установить SCP.
2. В директорию плагина положить Script.vbs с содержимым:

Код: Выделить всё

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
3. В script.ini прописать:

Код: Выделить всё

[Script]
Section=Dir

[Dir]
Script=Script.vbs
LongName=1
ParseDirs=1
4. В диалоге поиска на вкладке "Плагины" ввести последовательно:
script | Result | = | 1
Запустить поиск.
5. После вывода результатов на панель и выделения нужных папок воспользоваться этим скриптом.
Хотя нет, скрипт по ссылке рекомендуется использовать, если нужно оставлять текущее имя папки, а не имя родительской. А как лучше?

Добавлено: Сб янв 14, 2012 20:51
Darkenlightener
Tol!k
Спасибо, получилось, но выведение на панель удобнее :wink: ,

Flasher
Спасибо, поиск работает. Скрипт по ссылке никаких результатов не дал мне, я попробовал. Имя должно остаться родительской папки. Наверное, поиском папок и выведением их на панель пока стоит ограничиться, потому что их все равно приходится просматривать и проверять во второй панели, и автоматическое перемещение не имеет смысла делать. Находятся ведь и такие папки E:\Боевые искусства\Аудио\Шлахтер\Путь Воина. Практики (Шлахтер)\ т.е. обоснованно находящиеся в таком виде (например, к ним потом могут быть добавлены другие папки), а их трогать вообще не нужно. Так что я пока потестирую, может быть, этого и хватит :D

Добавлено: Сб янв 14, 2012 20:58
Flasher
Darkenlightener писал(а):Скрипт по ссылке никаких результатов не дал мне, я попробовал. Имя должно остаться родительской папки.
Я для того вопрос и задал. Сейчас посмотрю, что там надо поправить.
Darkenlightener писал(а):потому что их все равно приходится просматривать и проверять во второй панели, и автоматическое перемещение не имеет смысла делать
Ещё раз:
Flasher писал(а):самостоятельно проверить найденные по заданному изначально критерию папки, потом воспользоваться скриптом автоперемещения
Ctrl+Влево/Вправо в зависимости от местоположения результатов, проверил - выделил, проверил - выделил, закончил выделять - воспользовался скриптом.

Добавлено: Сб янв 14, 2012 21:16
Darkenlightener
Flasher
Снимаю шляпу)) Чувствую себя как курсант из анекдота "Говорили дураку — учи, учи!!!"

Я столько лет мечтал о такой функции как Ctrl+Влево/Вправо, а в справке посмотреть не догадался((

Тогда конечно, все меняется и можно применять автоматическое перемещение.

Добавлено: Сб янв 14, 2012 21:50
Flasher
Darkenlightener

Код: Выделить всё

'====================================================
' Перемещение содержимого подкаталогов 
' внутри выделенных папок на уровень вверх

' Параметры: %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

Добавлено: Сб янв 14, 2012 22:04
Darkenlightener
Flasher
Не срабатывает. Нахожу папки, выделяю, запускаю скрипт, никаких результатов(((

Добавлено: Сб янв 14, 2012 22:08
Flasher
Darkenlightener
Нужно после выполнения посмотреть содержимое выделенных папок, можно по всё тому же "новоиспечённому" методу. :wink:
Кстати, забыл убрать из скрипта вывод окна, сделано.

Добавлено: Сб янв 14, 2012 22:19
Darkenlightener
Flasher
Я просто в них захожу после выполнения скрипта, никаких изменений.

Скрипт скопировал заново, окно командной строки все равно выскакивает, если вы про него.