Question: 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...

1. 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?
2. How do I check if a file ,`\\fileserver\myapp\releasedocs\ {build}.doc`, exists using the variable from part 1 in place of {build}?

Answer: 
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.
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 `!`