为什么我的IrfanView命令不能用于批处理文件,但直接在CMD中输入时可以正常工作?

时间:2017-06-01 07:24:14

标签: batch-file cmd irfanview

我是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 个答案:

答案 0 :(得分:1)

您需要在批处理中使用引号调用可执行文件。此外,路径中的>也不起作用。还可以考虑使用for循环而不是创建单个批处理行。

请试试这个:

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

答案 1 :(得分:1)

将带有空格的路径/文件名用引号括起来告诉解释器,它不是两个字,而是一个字符串(甚至更好:习惯于总是包含路径/文件名):

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

在使用dozends或数百个几乎相同的行构建批处理文件之前,请使用for循环处理文件夹中的所有.tif个文件:

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

有关详细信息,请参阅for /?