[英]Replace find Special characters string - Batch
Thank you, with your hint I have adjusted my main batch file but variable TARG_FILE is not changing. 谢谢您的提示,我已经调整了我的主批处理文件,但变量TARG_FILE没有改变。 I am trying to extract the file name from FileList_for_Import.txt which contains data as
我正在尝试从FileList_for_Import.txt中提取文件名,其中包含以下数据:
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! `该批次的输出为!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. 但是使用以下语句,它将在第一次迭代中替换为file1.txt,而在第二次迭代中,其值不变且不会替换。
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 我用一个文件filelist.txt
toto.txt
titi.txt
tata.txt
this will be the replacing name of fileold.txt. 这将是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 : 在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>"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.