首页 > 解决方案 > Cmd 文件用换行符将文件内容放入 var

问题描述

我正在研究一个 cmd 脚本。在其中我读取一个文件并将结果放在一个变量中我的文件看起来像这样:

第一行(空白行) 第二行(空白行) 它继续这样

在我的代码中,我正在使用这个:

For /f "Tokens=* Delims=" %%x in (temp.txt) do set content=!content!%%x

结果,一切都在一行上,我没有空白行:第一行第二行...我怎样才能得到空白行?

标签: batch-filecmdnewline

解决方案


您的 for 循环不会获取空行,因为会跳过空行。
您需要一个技巧,例如使用 findstr 在每行前面加上行号。
要添加换行符,您可以定义一个包含单个换行符的变量(在代码中的\n变量)

@echo off
SETLOCAL EnableDelayedExpansion
(set \n=^
%=do not delete this line=%
)

set "content="
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ t7.bat"`) do (
    set "var=%%a"
    set "var=!var:*:=!"
    if defined content (
        set "content=!content!!\n!!var!"
    ) else set "content=!var!"
)

echo(!content!

此代码仍有一些问题,带有感叹号,但对于简单的文件内容它可以工作


推荐阅读