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

时间:2010-06-18 10:45:22

标签: batch-file

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

"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

所以我有几个关于如何实现这个目标的问题......

  1. version.txt文件夹中有\\testserver\testapp$个文件,此文件的唯一内容是内部版本号(例如,45 - 对于内部版本45) 如何将version.txt文件的内容读入批处理文件中的变量?

  2. 如何使用第1部分中的变量代替{build}检查文件\\fileserver\myapp\releasedocs\ {build}.doc是否存在?

4 个答案:

答案 0 :(得分:250)

将文件内容读入变量:

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路径。现在无法测试,但请记住这一点。

答案 1 :(得分:35)

您可以从文件中读取多个变量,如下所示:

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

其中param.txt:

PARAM1=value1
PARAM2=value2
...

答案 2 :(得分:26)

只是这样做:

type version.txt

,它将显示为您输入的内容:

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

答案 3 :(得分:17)

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

SETLOCAL EnableDelayedExpansion

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

某些特殊字符存在问题,尤其是;%!