for Instance我试图有两个批处理程序,一个是从另一个程序制作的。但是他们都想要编辑另一个批处理程序,但在该程序中它必须设置1个变量但它需要两个,只有当第3个程序启动时,第二个程序启动并检测其数据并将第二个值添加到第3个程序< / p>
第一次启动时的第3个程序示例:
@echo off
set a=1
goto a
*command*
:a
IF %b% EQU 3 GOTO section_3
if %a% EQU 2 goto section_2
:section_1
*command*
第二个启动时的第3个程序示例:
@echo off
set b=3
set a=1
goto a
*command*
:a
if %b% EQU 3 goto section_3
if %a% EQU 2 goto section_2
:section_1
*command*
所以我的问题是如何在不编辑代码的情况下绕过“IF%b%EQU 3 GOTO section_3”,只添加以下代码:a和“IF%b%EQU 3 GOTO section_3“
非常感谢谢谢!
答案 0 :(得分:0)
由于您只允许在:a
之后直接插入代码,并且没有指定如果未定义b
该怎么办,我会冒险猜测:
if not defined b if %a% equ 2 (goto section_2) else (goto section_1)
答案 1 :(得分:0)
你问:
所以我的问题是如何在不编辑代码的情况下绕过“IF%b%EQU 3 GOTO section_3”并且仅添加以下代码:a和“IF%b%EQU 3 GOTO section_3”
但您的标记列表包含syntax-error,因此您应该问 “如何修改我的代码以避免语法错误 {{1当b未定义时, “
您收到语法错误,因此您当然需要修改代码。您修改错误而不修改代码的请求毫无意义。
当未定义b时会出现语法错误,因为在扩展百分比之后解析了IF语句,并且该行扩展为if %b% EQU 3 goto section_3
,这显然是语法错误。解决此类问题的最简单和最常见的解决方案之一是在比较的左侧和右侧添加引号:
if EQU 3 goto section_3
当p未定义时,安全地扩展到if "%b%" EQU "3" goto section_3
,并且IF语句现在在语法上是正确的。
但我相信你有更大的问题。使用批处理脚本修改另一个批处理脚本几乎总是一个坏主意,尤其是您描述过程的方式。你没有充分描述你的真正目标,所以我不能建议你应该做什么。但我几乎可以保证有更好的方法可以解决您的问题,而不涉及修改其他批处理文件的批处理文件。