带有 goto 命令的 Windows 批处理文件不起作用

2024-03-01

我对 GOTO 命令和附属标签有疑问。

事实:给定文件夹中的一堆文件(它们是日志错误),我需要打开它们并检查它们是否包含特定字符串。如果是,则从文件名中删除一些字符(最后一次出现“_”之后的所有字符,包括其本身)并执行其他操作。

为了切断字符,我以循环方式使用 GOTO 命令,正如我发现的那样:http://www.robvanderwoude.com/battech_while_loops.php http://www.robvanderwoude.com/battech_while_loops.php

脚本是:

@echo off
setlocal EnableDelayedExpansion

cls

for %%X in (D:\e-pub\outbox\logs\*.*) do (

    for /F "tokens=7" %%S in (%%X) do (

        if /i "%%S"=="<ml>" (
            SET fisier=%%~nX
            SET cond=!fisier:~-1!
            SET fisier=!fisier:~0,-1!

            :loopStart
            rem condition to break the loop
            if !cond!==_ goto loopEnd
            SET cond=!fisier:~-1!
            SET fisier=!fisier:~0,-1!
            goto loopStart

            :loopEnd

            rem here it should be out of a loop
            rem other stuff to do with var !fisier!
            rem the following line is not executed because of the label loopEnd
            echo !fisier!
        )
    )
) 

pause

脚本没有运行,因为标签loopEnd后面有一个空行?! 如果我在该标签之后编写任何指令,它们将被执行,但第一个 for 语句的其余迭代将不会被执行(日志错误文件夹包含多个文件)

有人可以提供帮助吗?


你有两个问题。

一个问题是 goto 破坏了 for 循环。 另一方面,括号中的标签相当困难。

goto 会中断always 和所有嵌套循环,即使goto 的标签位于同一块中,并且for 变量在跳转后立即丢失。

括号中的标签是“两行”导向的! 我尝试了标签,下面是括号的一些结果。

当出现标签时,下一行必须采用正确的“辅助”行格式。

这就是失败的原因。

(
:this label fails with a syntax error
)

(
:this works
:because this line is a "legal" secondary line
)

(
:: The remark style
:: fails, because it's not "legal" to use a double colon, because it's not a legal path (in the most cases)
)

(
:and now I got courious & echo This will not echo'd
:but & echo You can see this !
)

对于第二行,跳过批处理解析器的一些步骤。

@不起作用,@echo Hello尝试启动一个名为@echo.bat.

括号的分割失败,就像echo( hello.
标签作为文件名处理,:echo仅检查如果:echo是一个有效的文件名,然后跳过这部分。

::hello在驱动器上搜索::.
出于测试目的,驱动器::可以创建为subst :: c:\temp.
由于第二行上的标签被简单地忽略,& 符号和管道也可以工作,但文件上::必须存在。

(
echo @echo This is %~f0
) > %TEMP%\testLabel.bat

REM create Drive ::
subst :: %temp% 
(
:Label 
::\testLabel.bat The bat will not be executed | echo But this
)
subst /D ::
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 goto 命令的 Windows 批处理文件不起作用 的相关文章

随机推荐

  • 有谁知道在 ANTLRWorks 中调试树语法的方法

    ANTLR 使用的推荐模式是让解析器构造一个抽象语法树 然后构建树遍历器 又称树语法 来处理它们 我试图弄清楚为什么我的树语法不起作用 并且希望使用 ANTLRWorks 的调试器 就像我将其用于解析器本身一样 解析器的输入是 源代码 但树
  • 将逗号分隔的文本文件读入数组

    我正在尝试用 C 编写一个程序 模拟大学招生系统 学生输入他们的 ID 程序在文本文件中搜索他们的信息 并根据文本文件加载结构 我已经到了无法将他们注册的课程放入结构数组的地步 使用 getline 函数 使用 作为 delim 也将继续下
  • NAT后的两个节点如何通信?

    我有一些节点 每个节点都属于其他网络 每个节点都有私有IP 例如192 168 0 2并保持在 NAT 之后 节点之间是否有可能进行通信 实际上 我需要在这些独立节点之间传输文件 我尝试使用这个项目 https github com lib
  • 如何更新FormArray的控件

    我的表单组代码如下 this myForm this fb group branch name Validators required branch timing this fb array this initBranchTiming in
  • 缩小大小时防止引导程序中列的包装/堆叠?

    我想使用 nowrap 或任何其他替代方法来防止在 col md 4 上堆叠 col md 8 就像我对 无序列表 所做的那样 下面是我的代码片段 我还提到了每个盒子的类别和颜色 谢谢
  • Spring JdbcTemplate:如何限制选定的行?

    我正在使用春天JdbcTemplate用于从 MS SqlServer DB 获取数据的接口 在文档中我看到有setMaxRows 方法来设置所有查询的限制 但是如果我只想限制一个选择怎么办 有没有办法以 可配置 的方式仅对特定调用的查询设
  • 计算 facebook 封面偏移 y

    我正在使用 Facebook SDK 获取用户封面照片 我有 img 的路径和偏移量 y source http a5 sphotos ak fbcdn net hphotos ak ash3 526114 459046674110601
  • 以编程方式将用户权限添加到 Sharepoint 中的列表

    如何以编程方式将用户权限添加到 Sharepoint 中的列表 我想为某个列表的用户或组添加 贡献 权限 我正在使用 C 您可以使用SP角色分配 http msdn microsoft com en us library microsoft
  • 将枚举值传递给角度 2 组件

    我有一个enum 并且想要从模板传递enum价值 这怎么可能 export enum FIELDS GENDER
  • 多个 y 尺度,但仅启用一个用于平移和缩放

    考虑以下用于绘制 matplotlib 图形的 python 代码 import matplotlib pylab as pp import numpy as np alpha np linspace 0 2 np pi 400 sig1
  • 使用 HTMLUnit 使用 Java 以编程方式登录 Facebook

    这个问题有点像这个问题的补充 如何使用 Java 以编程方式登录 Facebook https stackoverflow com questions 2285250 how to log into facebook programmati
  • 是否可以让 Handler 意识到它已被删除?

    我正在编写一个自定义日志配置类 它设置一个特定的处理程序并将其与根记录器关联 并计划在多个应用程序中使用它 我担心实际的程序代码会删除该处理程序并安装另一个处理程序 有没有一种方法可以让处理程序检测到它已从特定记录器中删除 或者让记录器报告
  • 显示喜欢项目列表中的项目的用户

    我认为这是一个不切实际的问题 但我想得到一些反馈来确认 我有一个产品和用户数据库 用户可以在其中喜欢产品 喜欢的数据存储在仅包含 pid 和 uid 的参考表中 客户请求是显示喜欢产品列表中每个产品的 3 位用户 问题是 不可能在产品列表的
  • Chrome/Webkit 中的 CSS 动画/缩放问题

    此效果在 FF 中运行良好 但在 Chrome 中则不然 Chrome 中的 Firebug 结果显示 webkit animation 未在 Chrome 中呈现 然而 在 Firefox 中 您会在对象入口处看到 拉伸 效果 在 Chr
  • 使用 ICS 更改 wifi 网络时,ErrnoException:isConnected 失败:EHOSTUNREACH(没有到主机的路由)

    在 ics 上使用我的应用程序时 将 wifi 网络从网络更改为网络后 所有图像请求都开始返回 但出现异常 异常失败 gt org apache http conn HttpHostConnectException Connection t
  • 使用 Scanner 的 nextLine() 和 hasNextLine() 方法时出现问题

    我有一个包含以下数据的日志文件 最短路径 2 RV3280 RV0973C RV2888C最短路径 1 RV3280 RV2502C最短路径 2 RV3280 RV2501C RV1263最短路径 2 RV2363 Rv3285 RV328
  • Windows 服务如何以标准时间间隔启动应用程序?

    顾问设置 Windows 服务来运行应用程序 该应用程序应该每 15 分钟运行一次 该应用程序根本没有运行 并且服务似乎运行良好 我不熟悉应用程序作为服务运行时如何以标准间隔运行 该服务使用 SRVANY EXE 工具 任何使用 SRVAN
  • mysql删除重复数据

    这向我显示了所有具有完全相同的两个条目的名字和姓氏 SELECT firstname lastname COUNT AS Count FROM people GROUP BY firstname lastname HAVING Count
  • 尝试运行 Strapi 会出现模块解析错误

    我正在尝试通过 Ubuntu 20 04 上的 npm 使用 npm rundevelop 运行一个 Strapi 项目 该代码来自我的一个小组项目 没有其他人遇到这些问题 Error cache plugins strapi plugin
  • 带有 goto 命令的 Windows 批处理文件不起作用

    我对 GOTO 命令和附属标签有疑问 事实 给定文件夹中的一堆文件 它们是日志错误 我需要打开它们并检查它们是否包含特定字符串 如果是 则从文件名中删除一些字符 最后一次出现 之后的所有字符 包括其本身 并执行其他操作 为了切断字符 我以循