循环文件夹树并在子文件夹中并行执行bat文件(访问子文件夹中的文件)

时间:2014-04-01 06:59:33

标签: loops batch-file

我正在尝试在folder1中创建一个bat文件作为父文件夹,这个名为run.bat的bat文件将循环遍历所有子文件夹,并调用名为{{1}的bat文件但是,并行,这些child.bat必须访问同一文件夹中的另一个文件。

例如:

child.bat

Folder1 (have run.bat) | |_______Folder2 | | | |_______aa.txt | | | |_______child.bat | |_______Folder3 | |_______bb.txt | |_______child.bat child.bat,内容为:

Folder2

type aa.txt child.bat,内容为:

Folder3

我知道有关于如何循环子文件夹以及在子文件夹中运行bat文件的问题。但我的问题是,bat文件必须访问位于同一子文件夹中的其他文件。如果我们不输入子文件夹(type bb.txt ),cd subfolder将无法成功执行。以下是我尝试过的child.bat内容:

run.bat

然而,失败了。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我的猜测是脚本必须能够从调用for循环的同一位置一致地更改目录。只需保存当前文件夹(通过pushd)并在子调用(通过popd)后恢复它就足够了。

@echo off
FOR /d /r %%i IN (*) DO (
   pushd "%%i"
   call "child.bat"
   popd
)

答案 1 :(得分:0)

根据评论中的额外信息,这应该适合您。

@echo off
FOR /d /r %%i IN (*) DO (
   if exist "%%i\child.bat" start "" /d "%%i" "%comspec%" /c "child.bat"
)