Batch file 如何逐行读取文本文件并使用批处理文件修改每一行?
假设有一个文本文件包含:Batch file 如何逐行读取文本文件并使用批处理文件修改每一行?,batch-file,Batch File,假设有一个文本文件包含: L1 L2 L3 我想有一个批处理文件,它将读取该文件中的每一行,然后将它们变成变量。例如,这些将是变量: line1 = L1 line2 = L2 line3 = L3 如何使用批处理文件完成此操作?Windows命令处理器是为运行命令和应用程序而设计的。它不是为编辑文本文件而设计的。实际上,每种脚本或编程语言都比Windows命令处理器cmd.exe执行的批处理文件更好 对于使用每个字符一个字节或简单批处理文件的简单文本文件示例,可以使用: @echo off
L1
L2
L3
我想有一个批处理文件,它将读取该文件中的每一行,然后将它们变成变量。例如,这些将是变量:
line1 = L1
line2 = L2
line3 = L3
如何使用批处理文件完成此操作?Windows命令处理器是为运行命令和应用程序而设计的。它不是为编辑文本文件而设计的。实际上,每种脚本或编程语言都比Windows命令处理器cmd.exe执行的批处理文件更好 对于使用每个字符一个字节或简单批处理文件的简单文本文件示例,可以使用:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "LineNumber=0"
del "%TEMP%\TextFile.tmp" 2>nul
for /F "usebackq delims=" %%I in ("TextFile.txt") do (
set /A LineNumber+=1
echo line!LineNumber! = %%I
) >>"%TEMP%\TextFile.tmp"
if exist "%TEMP%\TextFile.tmp" move /Y "%TEMP%\TextFile.tmp" "TextFile.txt"
if errorlevel 1 del "%TEMP%\TextFile.tmp"
endlocal
但此批处理文件无法处理正确的行
不包含任何字符空行,
以分号开头;,
包含一个或多个感叹号!。
更好但速度较慢的批处理文件是:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "LineNumber=0"
del "%TEMP%\TextFile.tmp" 2>nul
for /F delims^=^ eol^= %%A in ('%SystemRoot%\System32\findstr.exe /N "^" "TextFile.txt" 2^>nul') do (
set "Line=%%A"
set /A LineNumber+=1
setlocal EnableDelayedExpansion
echo line!LineNumber! = !Line:*:=!
endlocal
) >>"%TEMP%\TextFile.tmp"
if exist "%TEMP%\TextFile.tmp" move /Y "%TEMP%\TextFile.tmp" "TextFile.txt"
if errorlevel 1 del "%TEMP%\TextFile.tmp"
endlocal
请参阅我关于为什么FOR循环要复杂得多才能更好地处理文本文件的答案
无法使用这两个批处理文件处理带有或字符编码的文本文件
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
德尔/?
回声/?
endlocal/?
findstr/?
对于/?
如果/?
移动/?
集/?
setlocal/?
另请参阅Microsoft关于的文章。也许你的想法不对。。。StackOverflow不是免费的编码服务!请看一看,并提供一个你迄今为止所做的尝试。