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不是免费的编码服务!请看一看,并提供一个你迄今为止所做的尝试。