windows - 批处理文件对多个目录中的所有文件执行命令

标签 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"

多个文件夹中的所有文件。所有文件都将位于\TIFFs\中,但将驻留在几个不同的子文件夹中。 (旧目录)此外,我需要在运行命令(运行?)之前创建文件夹\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 的名称和扩展名。很可能, 扩展将不存在 - 这是无害的

关于windows - 批处理文件对多个目录中的所有文件执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15351034/

相关文章:

windows - 如何从 Windows cmd "dir"中仅获取文件大小?

linux - 计算行数并按前缀词分组

linux - 任何可以获取我在命令行中的位置的程序

c - 错误地址 C(命令行解释器)

c++ - 使用 for 循环绘制边框

android - 应用程序可以读取 DNS TXT 记录吗?

c++ - 为什么我的应用程序不能使用 x64 版本的 Windows Server 2008 运行?

c++ - 为什么此输出在此 for 循环中仅显示给定范围(用户输入)中的奇数

c++ - 在 windows 上编译 MSVC 是绝对必要的吗?

java - 对于 i0 变量