如何递归运行批处理

如何递归运行批处理

我有一个父文件夹(大文件夹),其中包含许多子文件夹(文件夹 1,文件夹 2,文件夹 3 ...)在每个子文件夹中都存在一个批处理文件,它总是相同的(x.bat)

我想从另一只蝙蝠递归地运行所有蝙蝠。

BIG_Folder(文件夹1(x.bat),文件夹2(x.bat),文件夹3(x.bat))

文件夹1、文件夹2、文件夹3 未创建,它们是由之前的 bat 创建的。因此,我尝试对 BIG_Folder 中包含的所有子文件夹进行递归操作。

当我将蝙蝠复制到文件夹时附加了代码。

for /D %%f in ("C:BIG_Folder\*") do copy "C:\3.bat" "%%f\" 

任何帮助表示感谢

答案1

感谢您的及时回复,对于造成的混乱我深表歉意

我会尽量简短。目标是将视频和音频打包到一个文件中。这意味着在每个文件夹中,文件夹 1、文件夹 2、文件夹 3,有 3 个文件,1 个视频(视频01)和 2 个音频(音频 01)(音频 02).执行完该命令后(3.BAT)成为一个单一文件。

这是精确的包装说明

bmxtranswrap -p -t op1a --ps-avcihead -o "OUT_SingleFile" %VIDEO01% %AUDIO01% %AUDIO02%   

这是3.bat的完整指令

   @echo off 

DIR *.mxf /b /o > clips.txt

for /F "tokens=*" %%X in (clips.txt) do call :variables "%%X" 
goto fin 

:variables 
set /a contador=contador + 1 
::
if "%contador%"=="1" set linea1=%~1 
if "%contador%"=="2" set linea2=%~1 
if "%contador%"=="3" set linea3=%~1 
if "%contador%"=="4" set linea4=%~1 
if "%contador%"=="5" set linea5=%~1 

goto:eof 

:fin 

echo %linea1% 
echo %linea2% 
echo %linea3% 
echo %linea4% 
echo %linea5% 

bmxtranswrap -p -t op1a --ps-avcihead -o "OUT_%linea1%_.mxf" %linea1%  %linea2% %linea3% %linea4% %linea5%    

pause

因此,bat 应该在每个文件夹中。每个文件夹都有相同的 bat(3.bat),但视频和音频的内容不同。我想要的是一次执行所有 bat(3.bat)。

还有一件事 1,2,3 文件夹是由另一个 bat 创建的脚本,它扫描目录并组织与字符匹配的视频和音频。

    @echo off
FOR /R "C:\MATERIAL" %%a IN (*.mxf*) DO set ruta=%%a&set datos=%%~nxa&call :separar
pause
goto:eof
:separar
set copia=%datos:~0,4%
if not exist "C:\MATERIAL\CARPETAS\%copia%" MD "C:\MATERIAL\CARPETAS\%copia%"
set archivo=%datos%

if %archivo:~0,4% EQU %copia% copy "%ruta%" "C:\MATERIAL\CARPETAS\%copia%" 

echo %ruta%

goto:eof

call exe.bat

pause

存在第二个 bat(2.bat),3.bat 将复制到 x.bat 创建的每个单独的文件夹中

@echo off
for /D %%f in ("C:MATERIAL\CARPETAS\*") do copy "C:\3.bat" "%%f\"
pause

任何帮助表示感谢

感谢一切

答案2

执行批处理脚本和首先将它们复制到那里一样简单(几乎相同):

for /d %%F in ("c:BIG_Folder\*") do call "%%F\3.bat"

但我怀疑你问错了问题。你没有理由必须在每个文件夹中都保存一份批处理文件。你应该能够在一个位置保存一个批处理文件,并且该脚本应该能够针对你选择的任何文件夹运行。

不知道您的批处理文件应该做什么,我无法建议你的问题应该是什么,更不用说答案是什么。

相关内容