Windows 批处理文件以对多个目录中的所有文件执行命令
我想创建一个运行以下命令的批处理文件:Windows 批处理文件以对多个目录中的所有文件执行命令,windows,command-line,for-loop,batch-file,batch-processing,Windows,Command Line,For Loop,Batch File,Batch Processing,我想创建一个运行以下命令的批处理文件: C:\Program Files (x86)\IrfanView\i_view32.exe" "C:\Users\digi_admin\TIFFs\ OLD DIRECTORY\*.tif" /ini="C:\Users\digi_admin\Documents\" /advancedbatch /tifc=4 /convert="C:\Users\digi_admin\CompTIFs\Some Folder\NEW DIRECTORY\*.tif"
C:\Program Files (x86)\IrfanView\i_view32.exe" "C:\Users\digi_admin\TIFFs\
OLD DIRECTORY\*.tif" /ini="C:\Users\digi_admin\Documents\" /advancedbatch /tifc=4
/convert="C:\Users\digi_admin\CompTIFs\Some Folder\NEW DIRECTORY\*.tif"
在多个文件夹中的所有文件上。所有文件都将位于\tiff\中,但将位于几个不同的子文件夹中。(旧目录)在命令运行(是否运行?)之前,我还需要创建文件夹\NEW DIRECTORY\(与旧目录同名)。以下是我到目前为止的情况:
FOR /D %d IN ("C:\Users\digi_admin\TIFFs\*.*") DO "C:\Program Files
(x86)\IrfanView\i_view32.exe" %d\*.tif /ini="C:\Users\digi_admin\Documents\"
/advancedbatch /tifc=4 /convert="C:\Users\digi_admin\CompTIFs\Some Folder\%d\*.tif"
我一直在命令行中尝试,所以%d应该是%%d。我不熟悉DOS,所以我确信它相对简单。任何帮助都将不胜感激
@ECHO OFF
SETLOCAL
SET destroot=C:\Users\digi_admin\CompTIFs
FOR /D %%d IN ("%destroot%\*") DO (
MD "%destroot%\%%~nxd" 2>nul
"C:\Program Files (x86)\IrfanView\i_view32.exe" "%%d\*.tif" /ini="C:\Users\digi_admin\Documents\" /advancedbatch /tifc=4 /convert="%destroot%\%%~nxd\*.tif"
)
现在-假设“/convert”是目标文件规范
注:
- 我已将目标根设置为一个变量-进行键入 容易的
- 2>nul将在以下情况下抑制生成的错误消息: 目标目录已存在
- %%~nxd表示%%d的名称和扩展名。很有可能是 扩展将不存在-这是无害的
%d
,但在批处理文件中,您需要使用%d
,我忽略了对其进行更改。现在修好了-我希望。结果是Irfanview找不到源文件。我不知道Irfanview的/convert
开关-它在做什么-但它似乎指定了要创建的目标文件,而不是目标目录。因此,/convert=“%destroot%\%%~nxd\*.tif”
似乎是正确的。顺便说一句,如果在“C:\Program Files(x86)\…
行之前添加ECHO
关键字,那么您将看到建议的Irfanview调用,而不是执行它。更简单(更简单)如果有什么不对劲……这正是我所需要的。谢谢。我把你的回答标记为接受。还有其他方式表达我的感激吗?(我只有3个声誉)