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个声誉)