I want to run a FOR LOOP to create files using the variables that it returns, and then modify the resulting variables and output.
I am trying to create files based upon the parent folder name, which contain the children in the output file, and then append a string to the beginning of each line in the output file.
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 is unusable because there are no files in it's child folder, only another folder, and that's ok, I can ignore it if needed.
Right now, the file folder2-output.bat contains the lines:
folder2-file1.bat
folder2-file2.bat
folder2-file3.bat
I want folder2-output.bat to contain the lines:
call folder2-file1.bat
call folder2-file2.bat
call folder2-file3.bat
I want folder3-output.bat to contain the lines:
call folder3-file1.bat
call folder3-file2.bat
call folder3-file3.bat
I want folder1\subfolder1-output.bat to contain the lines:
call subfolder1-file1-extratext.bat
call subfolder1-file2-extratext.bat
call subfolder1-file3-extratext.bat
But I can't figure out where to echo out the CALL command to add to the FOR LOOP.
I think I need to do something like
set "var2=%%G"
set "var2=CALL !var2!
and then
ECHO !var2! !var! >>"%temp%\looptest\!var!-output.bat"
But I'm not sure where to put that in the FOR loop.