This batch file releases a build from TEST to LIVE. I want to add a check constraint in this file that ensures there is an accomanying release document in a specific folder.
"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
So I have a couple of questions about how to achieve this...
There is a version.txt
file in the \\testserver\testapp$
folder, and the only contents of this file is the build number (for example, 45 - for build 45)
How do I read the contents of the version.txt
file into a variable in the batch file?
How do I check if a file ,\\fileserver\myapp\releasedocs\ {build}.doc
, exists using the variable from part 1 in place of {build}?
This question is related to
batch-file
To get all the lines of the file loaded into the variable, Delayed Expansion is needed, so do the following:
SETLOCAL EnableDelayedExpansion
for /f "Tokens=* Delims=" %%x in (version.txt) do set Build=!Build!%%x
There is a problem with some special characters, though especially ;
, %
and !
just do:
type version.txt
and it will be displayed as if you typed:
set /p Build=<version.txt
echo %Build%
You can read multiple variables from file like this:
for /f "delims== tokens=1,2" %%G in (param.txt) do set %%G=%%H
where param.txt:
PARAM1=value1
PARAM2=value2
...
Source: Stackoverflow.com