从一个批处理文件,子文件夹中执行多个批处理文件
我有以下结构:从一个批处理文件,子文件夹中执行多个批处理文件
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
的问题是,当我运行薄,一个临时文件夹在父文件夹中创建,并在子文件夹中创建什么。 我感谢帮助
感谢
我只是张贴这是一个解决方案,因为该代码不能正确适合评论。这样的事情呢?
@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文件
- 当取代
call
start
添加对于包含SPACE小号子目录支持。
谢谢,这工作。但完成该过程后,所有mybatch.bat cmd窗口仍保持打开状态。我应该添加什么来最终让他们接近? – Alaeddin
删除'开始'应该工作我猜... – geisterfurz007
'调用a.bat'启动一个接一个的批处理文件;并行运行它们,使用'start'“cmd/C a.bat';不知道OP想要什么,但... – aschipfl
请注意相对路径!你正在混合不同的目录:'dir/ad/b'在当前工作目录下搜索(因为没有指定路径),但是你使用了'%〜dp0',这是这个批处理文件的父目录;只要这些tweo位置相同,一切都很好,但只要它们不同,就会遇到奇怪的问题......考虑使用'call'而不是'start',除非您真的想运行所有的批处理文件同时... – aschipfl