遍历子目录并执行

Loop thru subdirectories and execute

我 运行 在 cmd 提示符下执行以下操作以将 .webp 文件转换为 .jpg,但必须进入每个子文件夹,一次一个,然后打开一个新的命令提示符 window, 无穷无尽...

for %f in (*.webp) do "X:XWeb\Games\webp (WEBPs)\libwebp-1.0.2-windows-x86\bin\dwebp.exe" -o "%~nf.jpg" "%f"
DEL "*.webp"
EXIT

我想创建一个批处理文件,它将循环遍历主文件夹以及每个子文件夹树,执行上述操作。我从其他一些 Whosebug 帖子中收集到以下内容,但它出错了。

@echo off
FOR /d /r %%i IN (*) DO (
   pushd "%%i"
COMMAND HERE????????
   popd
)

感谢任何帮助。

这里有两种方法可以做到这一点。 pushd到找到文件的目录,运行命令,测试jpg文件是否存在然后删除webp文件:

请注意,这是针对 batch-file 而不是 cmd

@echo off
for /R %%f in (*.webp) do (
    pushd "%%~dpf"    
    "X:XWeb\Games\webp (WEBPs)\libwebp-1.0.2-windows-x86\bin\dwebp.exe" -o "%%~nf.jpg" "%%~nxf"
    if exist "%%~nf.jpg" del /Q "%%~nxf"
    popd
)

或者您可以简单地 运行 通过在没有 pushd 的情况下进行转换,只需告诉它文件和输出文件的完整路径:

@echo off
for /R %%f in (*.webp) do (
    "X:XWeb\Games\webp (WEBPs)\libwebp-1.0.2-windows-x86\bin\dwebp.exe" -o "%%~dpnf.jpg" "%%~f"
    if exist "%%~dpnf.jpg" del /Q "%%~f"
)