首页 文章

如何将文件内容读入批处理文件中的变量?

提问于
浏览
114

此批处理文件将构建从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

所以我有几个关于如何实现这个问题的问题......

  • \\testserver\testapp$ 文件夹中有一个 version.txt 文件,该文件的唯一内容是内部版本号(例如,45 - 对于版本45)如何将 version.txt 文件的内容读入批处理文件中的变量?

  • 如何使用第1部分中的变量代替检查文件 \\fileserver\myapp\releasedocs\ {build}.doc 是否存在?

4 回答

  • 14

    将文件内容读入变量:

    for /f "delims=" %%x in (version.txt) do set Build=%%x
    

    要么

    set /p Build=<version.txt
    

    两者在文件中只有一行的行为相同,对于更多行, for 变量将最后一行放入变量,而 set /p 将使用第一行 .

    使用变量 - 就像任何其他环境变量一样 - 毕竟它是一个:

    %Build%
    

    所以要检查是否存在:

    if exist \\fileserver\myapp\releasedocs\%Build%.doc ...
    

    虽然很可能在那里不允许UNC路径 . 现在无法测试,但请记住这一点 .

  • 31

    您可以从文件中读取多个变量,如下所示:

    for /f "delims== tokens=1,2" %%G in (param.txt) do set %%G=%%H
    

    其中param.txt:

    PARAM1=value1
    PARAM2=value2
    ...
    
  • 26

    做就是了:

    type version.txt
    

    它将显示为您输入的内容:

    set /p Build=<version.txt
    echo %Build%
    
  • 230

    要将文件的所有行加载到变量中,需要延迟扩展,请执行以下操作:

    SETLOCAL EnableDelayedExpansion
    
    for /f "Tokens=* Delims=" %%x in (version.txt) do set Build=!Build!%%x
    

    某些特殊字符有问题,尤其是 ;%!

相关问题