Batch file 如何在批处理脚本的单个变量中读取文本文件中的所有内容?

Batch file 如何在批处理脚本的单个变量中读取文本文件中的所有内容?,batch-file,cmd,window,Batch File,Cmd,Window,这是我第一次使用批处理脚本,我尝试读取文本文件内容,并尝试在单个变量中设置其内容。我使用.bat文件运行脚本,但脚本不起作用。 我想在单个变量中设置文件的所有内容。 尝试了大多数示例,但失败。 下面是我正在尝试的脚本 cd "C:\documents and settings\%USERNAME%\desktop" for /f "delims=" %%x in (Test.txt) do set Build=%%x pause >nul exit 这是我的文本文件 和 下面的结果显示

这是我第一次使用批处理脚本,我尝试读取文本文件内容,并尝试在单个变量中设置其内容。我使用.bat文件运行脚本,但脚本不起作用。

我想在单个变量中设置文件的所有内容。
尝试了大多数示例,但失败。

下面是我正在尝试的脚本

cd "C:\documents and settings\%USERNAME%\desktop"
for /f "delims=" %%x in (Test.txt) do set Build=%%x
pause >nul
exit
这是我的文本文件


下面的结果显示



我希望它是单变量的

cd "C:\documents and settings\%USERNAME%\desktop"
setlocal enableDelayedExpansion
for /f "useback delims=" %%x in ("Test.txt") do set "Build=!build! %%x"
echo %build%
pause >nul
exit
请注意,可以指定给变量的字符串的最大长度为8191个符号。 还有一些特殊符号可能会破坏上面的脚本(
%

我想在单个变量中设置文件的所有内容

在批处理中,唯一的方法是自己构造一个多行变量,名为
!如果

@echo off
SETLOCAL EnableDelayedExpansion

::Change this
set "file=%~f0"
if NOT EXIST "%file%" exit /b 1

::Initialize & empty variables
( set LF=^
%= 0x0D Form Feed =%
)
set "lines="
set "data="

::Count lines
FOR /F tokens^=*^ delims^=^ eol^= %%L in (
'2^>nul findstr /N "^" "%file%"'
) do set /a "lines+=1"

::Read file using SET /P
<"%file%" (
  for /L %%a in (1 1 %lines%) do (
    set "x=" %= Workaround for empty lines =%
    set /p "x="
    set "data=!data!!LF!!x!"
  )
)

::Print data
echo(!data!

ENDLOCAL
pause & exit /b
@echo关闭
SETLOCAL EnableDelayedExpansion
::改变这个
设置“文件=%~f0”
如果不存在“%file%”,则退出/b 1
::初始化空变量(&M)
(左前)=^
%=0x0D表单提要=%
)
设置“行=”
设置“数据=”
::数行
对于/F令牌^=*^delims^=^eol^=%%L,在(
“2^>nul findstr/N”^“%file%”
)是否设置/a“行+=1”
::使用SET/P读取文件

您还可以使用@dbenham的
CERTUTIL
。它是针对
的万无一失的^
有关详细说明的开关,请参阅

@echo off
====SETLOCAL EnableDelayedExpansion EnableExtensions


set "B=^!"
set "C=^"
set ^"L=^
%===Line Feed===%
"
for /F %%C in ('wmic qfe list') do set "R=%%C" Carriage Return


>nul 2>&1 certutil -f -encodehex Test.txt "%temp%\hex.txt" 4


pushd "%temp%"
>expand.txt (
  for /f "delims=" %%A in (hex.txt) do for %%B in (%%A) do (
    set "char=%%B"
    REM ! --> !B!
    set "char=!char:21=21 42 21!"
    REM ^ --> !C!
    set "char=!char:5e=21 43 21!"
    REM <CR> --> !R!
    set "char=!char:0a=21 4c 21!"
    REM <LF> --> !L!
    set "char=!char:0d=21 52 21!"
    echo(!char!
  )
)

>nul 2>&1 certutil -f -decodehex expand.txt rawContent.txt
for /f delims^=^ eol^= %%A in (rawContent.txt) do set "fileContent=%%A"


del hex.txt expand.txt rawContent.txt
popd


echo(!fileContent!
@echo关闭
===SETLOCAL EnableDelayedExpansion EnableExtensions
设置“B=^!”
设置“C=^”
设置^“L=^
%===换行===%
"
对于/F%%C in('wmic qfe列表'),请设置“R=%%C”回车符
>nul 2>&1 certutil-f-encodehex Test.txt“%temp%\hex.txt”4
pushd“%temp%”
>expand.txt(
对于/f“delims=“%%A in(hex.txt)do对于%%B in(%%A)do(
设置“char=%%B”
雷!-->!B!
设置“char=!char:21=214221!”
雷^-->!C!
设置“char=!char:5e=214321!”
雷-->!雷!
设置“char=!char:0a=21 4c 21!”
雷…>!我!
设置“char=!char:0d=21 52 21!”
回声(!char!
)
)
>nul 2>&1 certutil-f-decodeChex expand.txt rawContent.txt
对于(rawContent.txt)中的/f delims^=^eol^=%%A,请设置“fileContent=%%A”
del hex.txt expand.txt rawContent.txt
邻苯二胺
echo(!fileContent!

是的,很好用,非常感谢,我可以用“,”逗号连接吗place@M.Y.Mnu-可以。使用
设置“Build=!Build!,%%x”