Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 为什么我的IrfanView命令在批处理文件上不起作用,但在CMD中直接键入时起作用?_Batch File_Cmd_Irfanview - Fatal编程技术网

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

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

我是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)
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文件在拆分时会打开,我不需要这样做。有没有一种方法可以让命令安静地分割文件?