首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何记住在批处理文件中循环迭代函数中的变量和if-语句?

如何记住在批处理文件中循环迭代函数中的变量和if-语句?
EN

Stack Overflow用户
提问于 2015-07-05 09:10:53
回答 1查看 89关注 0票数 0

我想在一个文件夹中自动执行几个bdf-文件。但是,我只能在当时运行我的应用程序的一个实例(由于我的应用程序许可证)。

我希望我的代码如下所示:

对于文件夹中的所有*.bdf文件,请执行以下操作:如果应用程序正在运行,请检查应用程序是否正在运行,如果没有运行,则启动index.bdf (与默认应用程序一起运行),然后再转到“检查是否”,再次继续FOR -循环。

我的代码如下所示:

代码语言:javascript
复制
@ECHO OFF
TITLE AutorunNastran
FOR %%f IN (*.bdf) DO (
    :loopbody
        tasklist /nh /fi "imagename eq nastran.exe" | find /i "nastran.exe" >nul && (
        echo Nastran is running
        TIMEOUT 5
        goto loopbody
        ) || (
        echo Nastran is not running, a new bdf-file will be executed
        START %%f
        )
)
PAUSE

第一个.bdf文件将被执行,但是当程序第二次和第三次通过i-语句运行时,我的变量index.bdf=%%f似乎被遗忘了。

我对批处理文件还不熟悉,但我尝试在google上找到答案,并认为也许我需要这个命令"Setlocal EnableDelayedExpansion",但到目前为止,它还没有对我起作用。如果能提供一些帮助,我们将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-05 09:49:07

在循环中执行goto会取消循环。试着

代码语言:javascript
复制
@echo off
    setlocal enableextensions disabledelayedexpansion

    set "app=nastran.exe"

    for %%a in (*.bdf) do (
        cmd /q /c"(for /l %%z in (0) do (tasklist /nh /fi "imagename eq %app%" | find /i "%app%" && timeout 5 || exit /b)) >nul 2>&1"
        start "" "%%~a"
    )

在这里,循环被移动到一个单独的cmd实例,该实例将保持一个无限循环,直到在tasklist中找不到该应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31228791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档