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}?
Read file contents into a variable:
for /f "delims=" %%x in (version.txt) do set Build=%%x
or
set /p Build=<version.txt
Both will act the same with only a single line in the file, for more lines the for
variant will put the last line into the variable, while set /p
will use the first.
Using the variable – just like any other environment variable – it is one, after all:
%Build%
So to check for existence:
if exist \\fileserver\myapp\releasedocs\%Build%.doc ...
Although it may well be that no UNC paths are allowed there. Can't test this right now but keep this in mind. Note that with the set /P command the file cannot be in Unicode format.
If the file is beside the script instead of %CD%
, then you can use "%~dp0
", like:
set /p Build=<%~dp0version.txt