如何将文件内容读入批处理文件中的变量?

这个批处理文件将一个构建从TEST释放到LIVE。我想在这个文件中添加一个检查约束,以确保在特定的文件夹中有一个附带的发布文档。

"C:\Program Files\Windows Resource Kits\Tools\robocopy.exe" "\\testserver\testapp$"
"\\liveserver\liveapp$" *.* /E /XA:H /PURGE /XO /XD ".svn" /NDL /NC /NS /NP
del "\\liveserver\liveapp$\web.config"
ren "\\liveserver\liveapp$\web.live.config" web.config

所以我有几个关于如何实现这一点的问题…

    \\testserver\testapp$文件夹中有一个version.txt文件,该文件的唯一内容是构建号(例如,45 -用于构建45) 如何将version.txt文件的内容读入批处理文件中的变量?李< / p > < / >
  1. 我如何检查一个文件,\\fileserver\myapp\releasedocs\ {build}.doc,存在使用第1部分的变量在{build}?

526913 次浏览

将文件内容读入变量:

for /f "delims=" %%x in (version.txt) do set Build=%%x

set /p Build=<version.txt

对于文件中的单行,两者的作用相同,对于更多行,for变量将把最后的行放入变量中,而set /p将使用第一。

使用变量-就像任何其他环境变量一样-毕竟它是一个:

%Build%

为了检验是否存在:

if exist \\fileserver\myapp\releasedocs\%Build%.doc ...

尽管那里可能不允许使用UNC路径。现在不能测试这个,但要记住。

要将文件的所有行加载到变量中,需要延迟扩展,因此执行以下操作:

SETLOCAL EnableDelayedExpansion


for /f "Tokens=* Delims=" %%x in (version.txt) do set Build=!Build!%%x

一些特殊字符会有问题,尤其是;%!

只做:

type version.txt

它会显示,就像你输入:

set /p Build=<version.txt
echo %Build%

你可以像这样从文件中读取多个变量:

for /f "delims== tokens=1,2" %%G in (param.txt) do set %%G=%%H

param.txt:

PARAM1=value1
PARAM2=value2
...