从批处理文件中,在子文件夹中执行多个批处理文件

时间:2016-09-15 08:47:08

标签: windows batch-file cmd

我有以下结构:

E:
  parent
    subfolder1 contains mybatch.bat
    subfolder2 contains mybatch.bat
    ....
    subfoldern contains mybatch.bat

文件夹的数量是动态的,名称是未知的,每天文件夹名称包含当前日期时间戳。

让我们说mybatch.bat只包含这个

 mkdir temp

我想从每个子文件夹中执行所有“mybatch.bat”。当我去每个子文件夹并手动执行mybatch.bat时,一切正常,将在子文件夹中创建一个名为“temp”的文件夹。

我想要的是一个批处理文件,它在每个文件夹中执行所有mybatch.bat,因此将在每个子文件夹中创建一个“temp”文件夹。我试过这个

cd E:\parent
for /f %%f in ('dir /ad /b') do start %~dp0%%f\mybatch.bat

问题是当我运行瘦身时,会在父文件夹中创建一个临时文件夹,并且子文件夹中不会创建任何内容。 我很感激帮助

由于

1 个答案:

答案 0 :(得分:2)

我只是将其作为解决方案发布,因为代码无法正确放入评论中。这样的事情怎么样?

@echo off
setlocal enabledelayedexpansion

set _ROOT="E:\parent"

for /f "tokens=*" %%f in ('dir /ad /b !_ROOT!') do (
    pushd "!_ROOT:"=!\%%f"
    call a.bat
    popd
)

<强> @ EDIT0

  • 在执行内部 .bat 文件时将start替换为call
  • 添加了对包含 SPACE s。
  • 的子目录的支持