I have a directory of files like such:
PDEN51505_1_1_N611729_15894285.XML
PDEN51505_1_2_N611729_15894286.XML
PDEN51505_2_1_N599021_15746279.XML
I need to create a custom log file for these files that will ultimately look like this:
462121 14105618 PD EN 97240 1 97240 RF PDEN51505_1_1_N611729_15894285 XML C N N 0
462121 14105618 PD EN 97240 1 97240 RF PDEN51505_1_2_N611729_15894286 XML C N N 0
462121 14105618 PD EN 97240 1 97240 RF PDEN51505_2_1_N599021_15746279 XML C N N 0
Instead of me modifying the individual lines in the custom log file each time, I'm creating an automation process to build it for me. Here is what I have so far:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
MODE con: cols=125 lines=50
SET /P WHERE=Where are the XMLs located (full file path)? (default: %CD%)
IF "%WHERE%"=="" (
SET WHERE=%CD%\
) ELSE (
IF "!WHERE:~-1!"=="\" (
SET WHERE=!WHERE!
) ELSE (
SET WHERE=!WHERE!\
)
)
:: TRAVERSE TO DIRECTORY THE USER JUST INPUT
CD %WHERE%
:: CREATES AN TEMP OUTPUT FILE OF THE DIRECTORY (MINUS EXTENTIONS)
FOR /f "tokens=*" %%a in ('dir /b /a-d *.xml') DO ECHO %%~na>>output.txt
:: CLEARS OUT "PDEN" VARIABLES
FOR /f "delims==" %%i IN ('set PDEN 2^>nul') DO (SET %%i=)
:: CREATES A LISTING SEPERATED BY SPACES
FOR /f "tokens=*delims=_" %%a IN (output.txt) DO (
SET PDEN=!PDEN! %%a
)
:: ATTEMPTS TO GENERATE A LOG FILE
FOR /f "tokens=*delims=" %%i IN ('set PDEN 2^>nul') DO (
>%WHERE%PDEN_GEN_LOG.log ECHO 462121 14105618 PD EN 97240 1 97240 RF !PDEN! XML C N N 0
ECHO [INFO] Generated PDEN_GEN_LOG.log
)
:: PROMPTS USER IF THEY WANT TO SEE THEIR CREATION
ECHO FINISHED
ECHO A new control file has been saved to %WHERE%
SET /P FILESURE=Would you like to view the LOG file you created?(Y/[N])?
IF /I "%FILESURE%" NEQ "Y" GOTO REMOVE
notepad.exe %WHERE%PDEN_GEN_LOG.log
:: REMOVES THE OUTPUT.TXT FILE
:REMOVE
RM %WHERE%output.txt
exit
It does everything right upto the point of creation. It's taking the list previously generated in output.txt and putting it on one line, so right now my log files are looking like this:
462121 14105618 PD EN 97240 1 97240 RF PDEN51505_1_1_N611729_15894285 PDEN51505_1_2_N611729_15894286 PDEN51505_2_1_N599021_15746279 XML C N N 0
On top of that, each time I execute.bat the %PDEN% seems to grow in size. Do I need to flush that variable?
Help wanted!
Thanks y'all