我正在使用下面的代码(批处理文件)逐行从属性文件读取到另一个文件。问题是它正在从源文件中删除所有空白行。我应该做哪些更改才能使空白行可用于目标文件?
FOR /F "USEBACKQ tokens=*" %%A IN (`FIND /V "" ^<"%FILE%.SRC"`) DO (
ECHO %%A>>"%FILE%"
)
最佳答案
FOR/F 总是会跳过空行,所以你必须避免空行。
这可以通过使用 findstr 或 find 在行前添加行号来解决。
那么你只需要删除行号即可。
(
setlocal DisableDelayedExpansion
for /F "delims=" %%L in ('findstr /n "^" "%FILE%.src"') do (
set "line=%%L"
setlocal EnableDelayedExpansion
set "line=!line:*:=!"
echo(!line!
endlocal
)
) > "%FILE%"
切换延迟扩展模式是必要的,因为您需要延迟扩展来删除第一个冒号之前的行号。
但是您需要禁用扩展才能将 %%L 传输到行变量,否则它会破坏感叹号,有时还会破坏插入符号。
读取文件的 set/p
技术是一种不同的方法,如 SO:Batch files: How to read a file? 中所述。
关于batch-file - 从一个文件读取到另一个文件时保持空白行完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21933942/