Thank you, with your hint I have adjusted my main batch file but variable TARG_FILE is not changing. I am trying to extract the file name from FileList_for_Import.txt which contains data as
file1.txt
file2.txt
`
Cls
DIR /o-d /b D:\Data\All_Inputfiles\*.* > D:\Data\FileList_for_Import.txt
REM Start Loop thru the file names that are available in FileList_for_Import.txt
REM Loop thru file
SETLOCAL EnableDelayedExpansion
@echo off
Set AllInputFile= D:\Data\FileList_for_Import.txt
SET INTEXTFILE=C:\DataLoader\Load.xml
set OUTTEXTFILE=D:\Data\tmp_out.txt
SET BackupPath=D:\Data\BackupLoad.xml
Set TempFile=D:\Data\tmp.txt
SET DbgFile=D:\Data\debuginfo.txt
Rem Remove Debug files
Del !DbgFile!
REM Del D:\Data\debugerr.txt
ECHO " Start ">!DbgFile!
ECHO !AllInputFile!>>!DbgFile!
ECHO " "###########Start of MAIN OF LOOP ############"
REM pause
for /f "tokens=*" %%a in (!AllInputFile!) do (
set "TARG_FILE=%%a"
REM ECHO line=%%a "TARG_FILE "!TARG_FILE!>>!DbgFile!
REM Get the 2nd line from the debugpayload file
REM for /f "tokens=1*delims=:" %%G in ('findstr /n "^" C:\DataLoader\Load.xml') do if %%G equ 2 set "DbgLine=%%H"
REM ECHO " "DbgLine "!DbgLine!>>!DbgFile!
Del !TempFile!
REM Copy !INTEXTFILE! !BackupPath!
findstr /g "InFilePath" !INTEXTFILE!>!TempFile!
REM set /p "DbgLine="< !TempFile!
set /p DbgLine=< !TempFile!
ECHO "DbgLine "!DbgLine!>>!DbgFile!
SET PREVFILE_NM=!DbgLine:~75,-13!
ECHO "PREVFILE_NM "!PREVFILE_NM! "TARG_FILE " !TARG_FILE! "Before Replace FinalreplaceLine "!FinalreplaceLine!>>!DbgFile!
set FinalreplaceLine=!DbgLine!
REM ECHO "Before Replace FinalreplaceLine "!FinalreplaceLine!>>!DbgFile!
set FinalreplaceLine=!FinalreplaceLine:%PREVFILE_NM%=%TARG_FILE%!
ECHO "FinalreplaceLine "!FinalreplaceLine!>>!DbgFile!
)
` Output of this batch is as !TARG_FILE! is getting with each iteration as
file1.txt
file2.txt
but with the below statement it replaces as file1.txt in the first iteration and in second iteration it value doesn't change doesnt replace.
set FinalreplaceLine=!FinalreplaceLine:%PREVFILE_NM%=%TARG_FILE%!
Thanks in advance for your help or valuable suggestions.
You're code is working on my computer ??? but you can try like this :
@echo off
SETLOCAL EnableDelayedExpansion
SET DbgFile=D:\Data\debuginfo.txt
::*******REM This block doesnt work********
set string=" <InFilePath>D:\Data\All_Inputfiles\oldfile.txt</InFilePath>"
set FinalreplaceLine=!string!
set PREVFILE_NM=oldfile.txt
set TARG_FILE=newfile.txt
ECHO "Before Replace FinalreplaceLine "!FinalreplaceLine!>!DbgFile!
set FinalreplaceLine=!FinalreplaceLine:%PREVFILE_NM%=%TARG_FILE%!
ECHO "FinalreplaceLine "!FinalreplaceLine!>>!DbgFile!
EDIT :
I make a file filelist.txt with
toto.txt
titi.txt
tata.txt
this will be the replacing name of fileold.txt.
@echo off
SETLOCAL EnableDelayedExpansion
SET DbgFile=D:\Data\debuginfo.txt
for /f "delims=" %%a in (FileList.txt) do call:replace "%%a"
exit/b
:replace
set string=" <InFilePath>D:\Data\All_Inputfiles\oldfile.txt</InFilePath>"
set FinalreplaceLine=!string!
set PREVFILE_NM=oldfile.txt
set TARG_FILE=%~1
ECHO "Before Replace FinalreplaceLine "!FinalreplaceLine!>>!DbgFile!
set FinalreplaceLine=!FinalreplaceLine:%PREVFILE_NM%=%TARG_FILE%!
ECHO "FinalreplaceLine "!FinalreplaceLine!>>!DbgFile!
Output in DebugInfo.txt :
"Before Replace FinalreplaceLine "" <InFilePath>D:\Data\All_Inputfiles\oldfile.txt</InFilePath>"
"FinalreplaceLine "" <InFilePath>D:\Data\All_Inputfiles\toto.txt</InFilePath>"
"Before Replace FinalreplaceLine "" <InFilePath>D:\Data\All_Inputfiles\oldfile.txt</InFilePath>"
"FinalreplaceLine "" <InFilePath>D:\Data\All_Inputfiles\titi.txt</InFilePath>"
"Before Replace FinalreplaceLine "" <InFilePath>D:\Data\All_Inputfiles\oldfile.txt</InFilePath>"
"FinalreplaceLine "" <InFilePath>D:\Data\All_Inputfiles\tata.txt</InFilePath>"
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.