Batch file 为什么我的IrfanView命令在批处理文件上不起作用,但在CMD中直接键入时起作用?
我是IrfanView的第一天用户,有一个问题。我有一堆多页tiff文件,我想把它们分开。因此,我使用如下命令编写一个批处理文件:Batch file 为什么我的IrfanView命令在批处理文件上不起作用,但在CMD中直接键入时起作用?,batch-file,cmd,irfanview,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.t
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)
Program Files\IrfanView>i_view64.exe D:\originaldirectory\filename1.tif /extract=(D:\newdirectory,tif)
C:\Program Files\IrfanView>i_view64.exe D:\originaldirectory\filename1.tif /extract=(D:\newdirectory,tif)
……等等
我把批处理文件放在D驱动器上,比如说放在文件夹“batchfolder”中。但它无法执行此任务,每个不成功的案例都会显示此消息(所有案例都不成功):
我想这和批处理文件的位置有关,所以我把它带到C驱动器。但它仍然无法正常运行,这一次会显示另一条消息:
C:\>C:\Program Files\IrfanView D:\originaldirectory\filename1.tif /extract=(D:\newdirectory,tif) 1>i_view64.exe
Access is denied.
这个C:\>C:\
让我觉得批处理文件中的C:\
部分可能是多余的。所以我把它拿出来,让它看起来像这样:
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)
Program Files\IrfanView>i_view64.exe D:\originaldirectory\filename1.tif /extract=(D:\newdirectory,tif)
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)
C:\Program Files\IrfanView>i_view64.exe D:\originaldirectory\filename2.tif /extract=(D:\newdirectory,tif)
Program Files\IrfanView>i_view64.exe D:\originaldirectory\filename1.tif /extract=(D:\newdirectory,tif)
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
。希望它不会违反策略。您需要在批处理中使用引号调用可执行文件。此外,路径中的
也将不起作用。还考虑使用for循环,而不是创建单个批处理线。
请试试这个:
"C:\Program Files\IrfanView\i_view64.exe" "D:\originaldirectory\filename1.tif" /extract=("D:\newdirectory",tif)
您需要在批处理中使用引号调用可执行文件。此外,路径中的
也将不起作用。还考虑使用for循环,而不是创建单个批处理线。
请试试这个:
"C:\Program Files\IrfanView\i_view64.exe" "D:\originaldirectory\filename1.tif" /extract=("D:\newdirectory",tif)
用空格将路径/文件名括在引号中告诉解释器,这不是两个单词,而是一个字符串(或者更好:习惯于总是将路径/文件名括起来): 在使用dozend或数百行几乎相同的行构建批处理文件之前,请使用
for
循环来处理文件夹中的所有.tif
文件:
@echo off
for %%a in ("D:\originaldirectory\*.tif") do (
"C:\Program Files\IrfanView\i_view64.exe" "%%~fa" /extract=("D:\newdirectory",tif)
)
有关详细信息,请参见
/?
。用空格将路径/文件名括起来,并用引号告诉解释器,这不是两个单词,而是一个字符串(或者更好:习惯于总是将路径/文件名括起来):
在使用dozend或数百行几乎相同的行构建批处理文件之前,请使用for
循环来处理文件夹中的所有.tif
文件:
@echo off
for %%a in ("D:\originaldirectory\*.tif") do (
"C:\Program Files\IrfanView\i_view64.exe" "%%~fa" /extract=("D:\newdirectory",tif)
)
有关详细信息,请参见
/?
。1>i_view64.exe
将前面命令行的输出写入名为i_view64.exe的文件中,如果该文件已存在,则将其覆盖;我假设您不想这样做,是吗?1>I_view64.exe
将前面命令行的输出写入名为I_view64.exe
的文件,如果它已经存在,则覆盖它;我想你不想这样,是吗?非常感谢,这很好,循环就是黑客。不过,这两种解决方案的一个问题是,原始tiff文件在拆分时会打开,我不需要这样做。有没有一种方法可以让命令安静地分割文件?非常感谢,这很好,循环就是黑客。不过,这两种解决方案的一个问题是,原始tiff文件在拆分时会打开,我不需要这样做。有没有一种方法可以让命令安静地分割文件?