Почему моя команда IrfanView не работает с командным файлом, но работает при наборе текста непосредственно в CMD?

Я первый день пользуюсь IrfanView и у меня есть вопрос. У меня есть куча многостраничных TIFF-файлов, и я хочу разделить их все по отдельности. Поэтому я пишу командный файл с командой, как это:

C:\Program Files\IrfanView>i_view64.exe D:\originaldirectory\filename1.tif /extract=(D:\newdirectory,tif)
C:\Program Files\IrfanView>i_view64.exe D:\originaldirectory\filename2.tif /extract=(D:\newdirectory,tif)

...и так далее...

Я поместил пакетный файл на диск D, скажем, в папку "batchfolder". Но это не может сделать работу, это сообщение появляется для каждого неудачного случая (все они были неудачными):

D:\batchfolder>C:\Program Files\IrfanView D:\originaldirectory\filename1.tif /extract=(D:\newdirectory,tif) 1>i_view64.exe
'C:\Program' is not recognized as an internal or external command, operable program or batch file.

Я думаю, это как-то связано с расположением командного файла, поэтому я перенес его на диск C. Но все равно он не может работать должным образом, на этот раз появляется другое сообщение:

C:\>C:\Program Files\IrfanView D:\originaldirectory\filename1.tif /extract=(D:\newdirectory,tif) 1>i_view64.exe
Access is denied.

это C:\>C:\ заставляет меня думать, может быть, C:\ часть в командном файле была избыточной. Итак, я вытащил это, чтобы это выглядело так:

Program Files\IrfanView>i_view64.exe D:\originaldirectory\filename1.tif /extract=(D:\newdirectory,tif)

...

Но это не работает, с командным файлом на диске D или C. Затем я пытаюсь напечатать его непосредственно в окне CMD, и он работает нормально, например так:

C:\Program Files\IrfanView>i_view64.exe D:\originaldirectory\filename1.tif /extract=(D:\newdirectory,tif)

Можете ли вы сказать, где мой пакетный файл идет не так?

Это другой вопрос. Ввод (или копирование и вставка) содержимого командного файла в CMD работает нормально. Но при успешном разделении оригинальный файл с несколькими изображениями автоматически открывается. Как я могу отключить эту функцию?

Примечание: кросс-пост здесь: https://irfanview-forum.de/showthread.php?t=11150&p=47111#post47111, Надеюсь, что это не нарушает политику.

2 ответа

Решение

Заключите пути / имена файлов с пробелами в кавычки, чтобы сказать интерпретатору, что это не два слова, а одна строка (или даже лучше: привыкните всегда заключать пути / имена файлов):

"C:\Program Files\IrfanView\i_view64.exe" "D:\originaldirectory\filename1.tif" /extract=("D:\newdirectory",tif)`

Прежде чем создавать пакетный файл с десятками или сотнями почти идентичных линий, используйте for цикл для обработки всех .tif файлы в папке:

@echo off
for %%a in ("D:\originaldirectory\*.tif") do (
  "C:\Program Files\IrfanView\i_view64.exe" "%%~fa" /extract=("D:\newdirectory",tif)
)

увидеть for /? для дополнительной информации.

Вам нужно вызвать исполняемый файл с кавычками в пакете. Так же > в пути тоже не получится. Также рассмотрите возможность использования цикла for вместо создания отдельных партий.

Пожалуйста, попробуйте это:

"C:\Program Files\IrfanView\i_view64.exe" "D:\originaldirectory\filename1.tif" /extract=("D:\newdirectory",tif)
Другие вопросы по тегам