我有一个父文件夹(大文件夹),其中包含许多子文件夹(文件夹 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"
但我怀疑你问错了问题。你没有理由必须在每个文件夹中都保存一份批处理文件。你应该能够在一个位置保存一个批处理文件,并且该脚本应该能够针对你选择的任何文件夹运行。
不知道您的批处理文件应该做什么,我无法建议你的问题应该是什么,更不用说答案是什么。