我想要一个可以执行以下操作的批处理代码:
将文本文件的所有内容加载到变量中。内容只有一行。
然后将1行分成2部分。
将这两部分作为新行放入另一个文本文件中。
假设我的内容是:
Bill Gates was born in 1955. <--When was Bill Gates born?-->
所以我想要一个批处理文件,将上面的整个句子转换为变量。
然后把它分成两部分,如
Bill Gates was born in 1955.
<--When was Bill Gates born?-->
然后将这两行导入另一个文本文件result.txt
,打开后,应该以这种方式存在这两行
Bill Gates was born in 1955.
<--When was Bill Gates born?-->
句子的语法:
xx yy <--xxy yyz -->
result.txt
中的新行:
xx yy
<--xxy yyz -->
请注意,句子可能会改变。我举了一个例子。句子必须分为两部分,第1部分在<--
之前,第2部分<--...-->
,其中...
是数据。
答案 0 :(得分:0)
这是一种简单的方法:
@echo off
type "file.txt" | repl "(.*)(<.*)" "$1\r\n$2" x >"newfile.txt"
这使用名为repl.bat
的助手批处理文件(由dbenham提供) - 从以下网址下载:https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat
将repl.bat
放在与批处理文件相同的文件夹中或放在路径上的文件夹中。
您也可以使用for /f
循环。
答案 1 :(得分:0)
set /p line=<in.txt
for /f "tokens=1,2 delims=<" %%i in ("%line%") do (
echo %%i>out.txt
echo ^<%%j>>out.txt
)
答案 2 :(得分:0)
第一个选项,子串操作
@echo off
setlocal enableextensions disabledelayedexpansion
rem read the first line of input file
< file.txt set /p "line1="
rem extract the second line of output file
set "line2=%line1:*<--=<--%"
rem extract the first line of output file
set "line=%line2%"
:loop
set "line1=%line1:~0,-1%"
set "line=%line:~0,-1%"
if defined line goto loop
rem generate output file
setlocal enabledelayedexpansion
( echo !line1!
echo !line2!
) > result.txt
endlocal
但这不是很有效率。更好地使用
@echo off
setlocal enableextensions disabledelayedexpansion
rem read the first line of input file
< file.txt set /p "line="
rem extract and output the lines
for /f "tokens=1,2 delims=|" %%a in ("%line:<--=|<--%") do (
echo %%a
echo %%b
) > result.txt
已编辑尝试解决评论中陈述的问题
@echo off
setlocal enableextensions disabledelayedexpansion
rem prepare the sample file to be readed
>file.txt echo Bill Gates was born in 1955. ^<--When was Bill Gates born?--^>
rem read the first line of input file
< file.txt set /p "line="
rem extract and output the lines
for /f "tokens=1,2 delims=|" %%a in ("%line:<--=|<--%") do (
echo %%a
echo %%b
) > result.txt
rem show the result
type result.txt