You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows CMD的batch脚本(fisier.bat)中将文件内容赋值给变量

嘿,这个问题我太熟了!在Windows CMD环境下用batch脚本把file.txt的内容赋值给变量,得根据文件的内容情况来选方法,我给你整理了几种实用的方案:

方法1:处理单行文本文件(无特殊字符)

如果你的file.txt只有一行内容,而且没有&、|这类特殊符号,用这个最简单的写法就行:

@echo off
setlocal enabledelayedexpansion
rem 读取file.txt的第一行到变量content
for /f "delims=" %%a in (file.txt) do (
    set "content=%%a"
    goto :breakloop  rem 只取第一行就跳出循环,避免读取后续行
)
:breakloop
echo 文件内容是:!content!
endlocal
  • delims=的作用是保留整行内容(包括空格),不然默认会把空格当成分隔符截断内容;
  • goto :breakloop是关键,因为for /f会逐行读取文件,加这个就能只取第一行;
  • enabledelayedexpansion开启延迟扩展,这样在循环里给变量赋值后能正常读取。
方法2:处理多行文本文件(保留换行)

要是文件有多行内容,还想把换行也保留在变量里,就得用点小技巧——先定义一个换行符变量,再逐行拼接:

@echo off
setlocal enabledelayedexpansion
set "content="
rem 先定义换行符,注意中间要空两行!
set ^"newline=^

^"
rem 逐行读取并拼接内容
for /f "delims=" %%a in (file.txt) do (
    if defined content (
        set "content=!content!!newline!%%a"
    ) else (
        set "content=%%a"
    )
)
rem 用echo(输出,避免空行或者特殊字符出问题
echo(!content!
endlocal

那个定义换行符的写法看起来有点奇怪,但这是CMD里唯一能把换行存进变量的办法,中间的空两行必须保留哦。

方法3:处理含特殊字符的文件

如果文件里有&、|、>、<、^这些特殊符号,直接读取会报错,这时候要加上usebackq参数,并且用延迟扩展来避免解析特殊字符:

@echo off
setlocal enabledelayedexpansion
set "content="
set ^"newline=^

^"
for /f "usebackq delims=" %%a in ("file.txt") do (
    set "line=%%a"
    set "content=!content!!line!!newline!"
)
echo(!content!
endlocal
  • usebackq允许我们用引号把文件名括起来,既可以处理带空格的文件名,也能避免特殊字符干扰文件读取;
  • 用!line!而不是%line%,因为延迟扩展不会解析变量里的特殊字符,能安全保存内容。
小提醒

CMD的变量有长度限制(大概8191个字符),如果你的file.txt特别大,这种方法就不太适用了,建议改用PowerShell来处理。

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:49:06