【发布时间】:2019-08-13 16:38:10
【问题描述】:
我想运行一个 FOR LOOP 来使用它返回的变量创建文件,然后修改结果变量和输出。
我正在尝试根据父文件夹名称创建文件,其中包含输出文件中的子文件夹,然后将字符串附加到输出文件中每一行的开头。
REM THIS SECTION IS JUST TO RECREATE MY ISSUE. THESE FILES AND FOLDERS ALREADY EXIST.
REM THEY ARE NOT SEQUENTIAL AND HAVE RANDOM NAMES.
REM ==================================================================
md %temp%\looptest\folder1\subfolder1
md %temp%\looptest\folder2
md %temp%\looptest\folder3
echo echo folder2-file1-line1 >> %temp%\looptest\folder2\folder2-file1.bat
echo echo folder2-file1-line2 >> %temp%\looptest\folder2\folder2-file1.bat
echo echo folder2-file1-line3 >> %temp%\looptest\folder2\folder2-file1.bat
echo echo folder2-file2-line1 >> %temp%\looptest\folder2\folder2-file2.bat
echo echo folder2-file2-line2 >> %temp%\looptest\folder2\folder2-file2.bat
echo echo folder2-file2-line3 >> %temp%\looptest\folder2\folder2-file2.bat
echo echo folder2-file3-line1 >> %temp%\looptest\folder2\folder2-file3.bat
echo echo folder2-file3-line2 >> %temp%\looptest\folder2\folder2-file3.bat
echo echo folder2-file3-line3 >> %temp%\looptest\folder2\folder2-file3.bat
echo echo folder3-file1-line1 >> %temp%\looptest\folder3\folder3-file1.bat
echo echo folder3-file1-line2 >> %temp%\looptest\folder3\folder3-file1.bat
echo echo folder3-file1-line3 >> %temp%\looptest\folder3\folder3-file1.bat
echo echo folder3-file2-line1 >> %temp%\looptest\folder3\folder3-file2.bat
echo echo folder3-file2-line2 >> %temp%\looptest\folder3\folder3-file2.bat
echo echo folder3-file2-line3 >> %temp%\looptest\folder3\folder3-file2.bat
echo echo folder3-file3-line1 >> %temp%\looptest\folder3\folder3-file3.bat
echo echo folder3-file3-line2 >> %temp%\looptest\folder3\folder3-file3.bat
echo echo folder3-file3-line3 >> %temp%\looptest\folder3\folder3-file3.bat
echo echo subfolder1-file1-line1 >> %temp%\looptest\folder1\subfolder1\subfolder1-file1-extratext.bat
echo echo subfolder1-file1-line2 >> %temp%\looptest\folder1\subfolder1\subfolder1-file1-extratext.bat
echo echo subfolder1-file1-line3 >> %temp%\looptest\folder1\subfolder1\subfolder1-file1-extratext.bat
echo echo subfolder1-file2-line1 >> %temp%\looptest\folder1\subfolder1\subfolder1-file2-extratext.bat
echo echo subfolder1-file2-line2 >> %temp%\looptest\folder1\subfolder1\subfolder1-file2-extratext.bat
echo echo subfolder1-file2-line3 >> %temp%\looptest\folder1\subfolder1\subfolder1-file2-extratext.bat
echo echo subfolder1-file3-line1 >> %temp%\looptest\folder1\subfolder1\subfolder1-file3-extratext.bat
echo echo subfolder1-file3-line2 >> %temp%\looptest\folder1\subfolder1\subfolder1-file3-extratext.bat
echo echo subfolder1-file3-line3 >> %temp%\looptest\folder1\subfolder1\subfolder1-file3-extratext.bat
REM THIS IS WHERE MY ACTUAL QUESTION STARTS
REM ========================================================
setlocal enabledelayedexpansion
FOR /F "delims=" %%G IN ('dir /a:d /b /s %temp%\looptest\') DO (
set "var=%%G"
set "var=!var:%temp%\looptest\=!
(
dir /b %temp%\looptest\!var!
)>>"%temp%\looptest\!var!-output.bat"
)
folder1-output.bat 无法使用,因为它的子文件夹中没有文件,只有另一个文件夹,没关系,如果需要我可以忽略它。
现在,文件folder2-output.bat 包含以下行:
folder2-file1.bat
folder2-file2.bat
folder2-file3.bat
我希望folder2-output.bat 包含以下行:
call folder2-file1.bat
call folder2-file2.bat
call folder2-file3.bat
我希望folder3-output.bat 包含以下行:
call folder3-file1.bat
call folder3-file2.bat
call folder3-file3.bat
我希望folder1\subfolder1-output.bat 包含以下行:
call subfolder1-file1-extratext.bat
call subfolder1-file2-extratext.bat
call subfolder1-file3-extratext.bat
但我不知道在哪里回显 CALL 命令以添加到 FOR LOOP。
我想我需要做一些类似的事情
set "var2=%%G"
set "var2=CALL !var2!
然后
ECHO !var2! !var! >>"%temp%\looptest\!var!-output.bat"
但我不确定将其放在 FOR 循环中的哪个位置。
【问题讨论】:
标签: batch-file for-loop variables