2016-10-11 7 views
0

Я пытаюсь использовать распаковщик для извлечения нескольких файлов. Мой сценарий идет как этогоbatch - Каталог обработанного файла в пакете

for /R %%i in (*.ext) DO quickbms.exe -o script.bms "%%i" "%%~ni" 

Проблема в том, когда я бросаю файл из C:\archives он извлекает все файлы в этот каталог, в том числе архивов в C:\archives\dir1, C:\archives\dir2, etc.

Как извлечь все архивы их собственной папке без необходимости вручную запускать скрипт в каждой папке?

+0

Так '%% ~ ni' должен представлять папку, не так ли? – aschipfl

+1

'for/R %% i in (* .ext) DO quickbms.exe -o script.bms" %% i "" %% ~ dpni "' – JosefZ

+0

В итоге я использовал 'for/R %% i in (* .ext) DO quickbms.exe -o script.bms "%% i" "%% ~ pi \ %% ~ ni" '@JosefZ, ваша версия немного более аккуратная, и делает то же самое. Не могли бы вы разместить его в качестве ответа? –

ответ

1
for /R %%i in (*.ext) DO quickbms.exe -o script.bms "%%~i" "%%~dpni" 

Пожалуйста, прочтите for /?: модификаторы могут быть объединены, чтобы получить соединение результаты.

По Command Line arguments (Parameters):

  • ...
  • %~f1 Развернуть %1 на полное имя пути - C:\utils\MyFile.txt
  • %~d1 Expand %1 на букву диска только - C:
  • %~p1 Развернуть %1 к Путь только, например \utils\включает в себя трейлинг-код \, который будет интерпретироваться как escape-символ некоторыми командами.
  • %~n1 Развернуть %1 в файл Имя без расширения файла C:\utils\MyFile или если имеется только путь (без обратной связи ) - последняя папка в этом пути.
  • ...

Ваш "%%~pi\%%~ni" приведет (с точки зрения приведенной выше примеров) до \utils\\MyFile.txt (обратите внимание на два последовательных \\обратных солидов).
К счастью, пакетный интерпретатор считает удвоился \\ (и даже размноженные) обратной косых черт в пути в качестве единого \обратного солидуса ...

+0

Спасибо за ссылку! Мне это было нужно. –

 Смежные вопросы

  • Нет связанных вопросов^_^