我需要一个批处理脚本,它将读入另一个批处理脚本(batch2)和:
例如: 如果这是我在批处理脚本中的第一行
/configin:%faxml%fm_sellin_in.xml /configout:%faxml%transco_fm_sellin_out%col_transco%.xml /inputfile:
我应该在我的文本文件中有这个:
%faxml%fa_sellin_in.xml
%faxml%transco_fm_sellin_out%col_transco%.xml
我在Here看到了一个很好的代码:
for /f "tokens=1-2 delims=~" %%b in ("yourfile.txt") do (
echo %%b >> newfile.txt
echo removed %%a)
但我不知道如何根据具体情况进行调整。
答案 0 :(得分:1)
为什么不用换行符替换所有/configin
和/configout
? -
(Replace string with a new line in Batch)
例如
setlocal EnableDelayedExpansion
set "str=/configin:%%faxml%%fm_sellin_in.xml /configout:%%faxml%%transco_fm_sellin_out%%col_transco%%.xml /inputfile:"
set str=!str:/configin^:=^
!
set str=!str:/configout^:=^
!
现在,!str!
将包含
fm_sellin_in.xml
transco_fm_sellin_out.xml /inputfile:
然后,您可以使用for
循环来提取字符串
for /f "tokens=1,2 delims=. " %%a in ("!str!") do ()
此for
循环遍历每一行,并使用和
.
字符拆分每一行。
因此%%a
是您的文件名,%%b
是扩展名。
然后
if [%%b]==[xml] (echo %%a.%%b>>mytextfile.txt)
我们将对batch2的所有行执行此操作。
完成的代码是
setlocal EnableDelayedExpansion
for /f "delims=" %%c in (batch2.txt) do (
set str=%%c
set str=!str:/configin^:=^
!
set str=!str:/configout^:=^
!
for /f "tokens=1,2 delims=. " %%a in ("!str!") do (if [%%b]==[xml] (echo %%a.%%b>>mytextfile.txt))
)