use*_*345 145 batch-file
此批处理文件将构建从TEST释放到LIVE.我想在此文件中添加一个检查约束,以确保在特定文件夹中存在一个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
Run Code Online (Sandbox Code Playgroud)
所以我有几个关于如何实现这个问题的问题......
version.txt
文件\\testserver\testapp$
夹中有一个文件,该文件的唯一内容是内部版本号(例如,45 - 对于内部版本45)如何将version.txt
文件内容读入批处理文件中的变量?
如何\\fileserver\myapp\releasedocs\ {build}.doc
使用第1部分中的变量代替{build} 检查文件是否存在?
Joe*_*oey 274
将文件内容读入变量:
for /f "delims=" %%x in (version.txt) do set Build=%%x
Run Code Online (Sandbox Code Playgroud)
要么
set /p Build=<version.txt
Run Code Online (Sandbox Code Playgroud)
两者都将在文件中只有一行的情况下相同,对于更多行,for
变量将最后一行放入变量,而set /p
将使用第一行.
使用变量 - 就像任何其他环境变量一样 - 毕竟它是一个:
%Build%
Run Code Online (Sandbox Code Playgroud)
所以要检查是否存在:
if exist \\fileserver\myapp\releasedocs\%Build%.doc ...
Run Code Online (Sandbox Code Playgroud)
虽然很可能在那里不允许UNC路径.现在无法测试,但请记住这一点.
xna*_*gyg 42
您可以从文件中读取多个变量,如下所示:
for /f "delims== tokens=1,2" %%G in (param.txt) do set %%G=%%H
Run Code Online (Sandbox Code Playgroud)
其中param.txt:
PARAM1=value1
PARAM2=value2
...
Run Code Online (Sandbox Code Playgroud)
Dav*_*vid 27
做就是了:
type version.txt
Run Code Online (Sandbox Code Playgroud)
它将显示为您输入的内容:
set /p Build=<version.txt
echo %Build%
Run Code Online (Sandbox Code Playgroud)
小智 19
要将文件的所有行加载到变量中,需要延迟扩展,请执行以下操作:
SETLOCAL EnableDelayedExpansion
for /f "Tokens=* Delims=" %%x in (version.txt) do set Build=!Build!%%x
Run Code Online (Sandbox Code Playgroud)
有一些特殊字符的问题,虽然特别;
,%
和!