如何将文件内容读入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
所以我有几个关于如何实现这个问题…
-
\\testserver\testapp$
文件夹中有一个version.txt
文件,此文件的唯一内容是内部版本号(例如,45 – 对于内部版本45)如何读取version.txt
文件的内容到batch file中的variables? -
如何使用第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%