【问题标题】:Why does my windows batch file keep looping after the condition is met?为什么我的windows批处理文件在满足条件后一直循环?
【发布时间】:2011-10-04 15:55:25
【问题描述】:

基本上,我想将最新版本的 MSI 从服务器复制到我的本地计算机。我正在尝试遍历一个文件并抓取包含要抓取的最新版本的 MSI 的第一行。我并不完全熟悉 for 循环和批处理文件中的 if 语句的怪异之处。这是我找到第一行后不断循环的代码:

cd %~dp0

mkdir "c:\MyApp\QA\msi"

rem Determine what folder is the latest version of QA
setlocal enabledelayedexpansion
dir /b /o-n "\\my-server\folder\another_folder\5.0.*" > output.txt
SET /a counter=1
SET version=""
for /f "usebackq delims=" %%a in (output.txt) do (
if "counter"==1 goto install (
xcopy "\\my-server\folder\another_folder\%%a\myinstaller.msi" "c:\MyApp\QA\msi\myinstaller.msi" /y
)
SET /a counter+=1
)

goto exit

:exit

PAUSE

【问题讨论】:

    标签: windows batch-file if-statement for-loop


    【解决方案1】:

    在这一行:

    if "counter"==1 goto install (
    

    "counter" 不能永远等于1。另一方面,!counter! 可能。

    说明(以备不时之需):

    "counter" 是一个文字,一个双引号中的单词counter。您将它与另一个文字 1 进行比较。显然,两者不匹配。这部分脚本最可能的意思是评估变量 counter 并将值与1 进行比较。在括号中的命令块中,通常使用延迟扩展,因此是 !counter!(与 %counter% 相对)。

    另一方面,上述行似乎有些不寻常。它包含goto 命令和之后 的另一个命令。我认为goto 后面的命令不太可能被执行。可能goto install 是多余的。

    【讨论】:

    • 太好了,谢谢!我肯定做错了。我现在开始工作了……非常感谢。
    猜你喜欢
    • 2018-09-03
    • 2021-12-13
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多