13

Я предполагаю, что это довольно легко сделать, но у меня нет опыта работы с утилитами командной строки Windows. По сути, мне нужно перебрать все файлы в каталоге (отлично, если он может создавать подкаталоги, но я могу запустить его в каждом из 5 каталогов, если это необходимо), получить имя в качестве переменной и запустить его

"C:\Program Files\ImageMagick-6.7.6-Q16\convert.exe" -compress LZW 
   -colorspace Gray -colors 32 file_var file_var

Я видел динамически именовать файлы в командной строке для цикла. Смогу ли я использовать это (поменять местами SET ... с помощью вышеуказанной команды)? Пространство на рассматриваемом компьютере не ограничено, поэтому я не могу выполнить резервное копирование перед запуском этого этапа (я знаю, что это плохо).

2 ответа2

12

Странно, был ответ, который имел рекурсивную часть.

Что ж, согласно « Как перебирать файлы, соответствующие символу подстановки в пакетном файле», я смог добиться этого. Вот как это было выполнено:

 cd path_to_root
 for /R %%f in (*.tif) do (
 "C:\Program Files\ImageMagick-6.7.6-Q16\convert.exe" -compress LZW 
    -colorspace Gray -colors 32 "%%f" "%%f"
 )
4

Откройте PowerShell

$files = Get-ChildItem -Recurse 
foreach ($file in $files){
    c:\windows\System32\notepad.exe $file.FullName
}

Get-ChildItem извлекает список файлов в виде объектов из текущего подкаталога. «-recurse» будет включать подкаталоги. Это помещает его в массив $ Files.

Цикл foreach циклически просматривает каждый файл и вызывает блокнот с аргументом командной строки, указав полный путь к имени файла для каждого файла.

ВНИМАНИЕ. Протестируйте приведенный выше код в каталоге с несколькими небольшими текстовыми файлами, поскольку он откроет экземпляр Блокнота для каждого файла.

Это должно дать вам представление о том, что вы хотите делать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .