为什么我的 IrfanView 命令在批处理文件上不起作用,但在直接在 CMD 中键入时却起作用?

Why does my IrfanView command not work on batch file but work when typing directly in 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 window 中输入它并且它正常工作,如下所示:

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

你能告诉我我的批处理文件哪里出了问题吗?

这是另一个问题。将批处理文件内容键入(或复制并粘贴)到 CMD 中就可以了。但在成功拆分后,原始的多图像文件会自动打开。我怎样才能停用此功能?

注:此处交叉post:https://irfanview-forum.de/showthread.php?t=11150&p=47111#post47111。希望不要违反政策。

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

请试试这个:

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

用空格将 paths/filenames 括在引号中告诉解释器,这不是两个词,而是一个字符串(或者更好:习惯总是将 path/filenames 括起来):

"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 /?