batch-file - 从一个文件读取到另一个文件时保持空白行完整

标签 batch-file command

我正在使用下面的代码(批处理文件)逐行从属性文件读取到另一个文件。问题是它正在从源文件中删除所有空白行。我应该做哪些更改才能使空白行可用于目标文件?

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/

相关文章:

mysql - 在启动 wamp 之前如何检查现有的 .pid?

.net - 使用相对路径的后期生成事件在 VS 2013 中不起作用

javascript - 不和谐中的私有(private)消息命令

unix - 是否可以在 Bash 中禁用命令替换?

command - ttf2ufm : command not found

arrays - 访问批处理文件中常量索引处的数组元素

batch-file - bat 将 stderr 重定向到 stdout 有奇怪的行为

windows - 如何使用命令行选项在 7zip 文件管理器中打开存档?

javascript - 找不到Nodeunit命令?

batch-file - 保存 wmic useraccount where name 到变量