如何将文件内容读入batch file中的variables?

这个batch file释放从TEST到LIVE的构build。 我想在此文件中添加一个检查约束,以确保在特定文件夹中有一个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. \\testserver\testapp$文件夹中有一个version.txt文件,此文件的唯一内容是内部版本号(例如,45 – 对于内部版本45)如何读取version.txt文件的内容到batch file中的variables?

  2. 如何使用第1部分中的variables\\fileserver\myapp\releasedocs\ {build}.doc检查文件\\fileserver\myapp\releasedocs\ {build}.doc存在?

将文件内容读入一个variables:

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

要么

 set /p Build=<version.txt 

两者只会在文件中只有一行,对于更多行, for变体会将最后一行放入variables中,而set /p将使用第一行。

使用variables – 就像任何其他的环境variables – 毕竟它是一个:

 %Build% 

所以要检查存在:

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

虽然很可能在那里不允许UNC路线。 目前无法testing,但请记住这一点。

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

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

其中param.txt:

 PARAM1=value1 PARAM2=value2 ... 

做就是了:

 type version.txt 

它会显示,如果你input:

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

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

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

有些特殊字符有问题,特别是;%!

 @echo off set str=^&Type file.txt echo %str%