Windows CMD 命令在每个子目录内运行命令吗?

Windows CMD 命令在每个子目录内运行命令吗?

我写了一个名为“joiner.bat”的批处理脚本。它需要在文件夹的 730 个子目录中运行。joiner.bat 文件已复制到每个子文件夹中,只需在每个子文件夹中运行即可。我试过了,但不起作用:

for %f in (*) do joiner.bat %f

我尝试在批处理文件之外的命令提示符下运行该命令,但它没有执行任何操作。我需要该命令进入文件夹,运行命令,返回上一个文件夹,进入下一个文件夹,运行命令,等等。

答案1

这应该可以做到:

for /d %%a in (*) do (
    cd %%a 
    call joiner.bat
)

在顶层目录中将其创建为批处理文件。

我根据评论修改了您的 bach 文件。您可能需要更多括号,并且 DelayedExpansion 需要使用 ! 而不是 %。试试这个

setlocal enabledelayedexpansion
for /d %%a in (*) do ( 
    cd %%a 
    copy /b *.xml newfile.xml 
    @echo off 
    SET "CDIR=%~dp0" 
    SET "CDIR=!CDIR:~0,-1!" 
    FOR %%i IN ("!CDIR!") DO (
        SET "PARENTFOLDERNAME=%%~nxi" 
        move newfile.xml "C:\users\lacroixja01\desktop\test\%PARENTFOLDERNAME%.xml" 
        )
)

答案2

我必须将其修改为如下所示:

for /d %%a in (*) do (
    cd %%a 
    call joiner.bat
    cd ..
)

相关内容