Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 我的批处理脚本有问题_Batch File - Fatal编程技术网

Batch file 我的批处理脚本有问题

Batch file 我的批处理脚本有问题,batch-file,Batch File,我还在学这门语言,所以请宽容一点 下面代码中与我的START变量相关的条件从未触发,我也不知道为什么。如果当前行以“80/”开头,前一行以分号开头,然后是空格,则应该执行该部分。可能是synthax错误或类似的错误。任何帮助都将不胜感激 @ECHO关闭 SETLOCAL DISABLEDELAYEDEXPANSION >“%~dpn1_2.txt”( 对于('find/V/N”“%1')中的/F“tokens=1*delims=]”%%j,请执行以下操作( 设置“currentLine=%%k”

我还在学这门语言,所以请宽容一点

下面代码中与我的START变量相关的条件从未触发,我也不知道为什么。如果当前行以“80/”开头,前一行以分号开头,然后是空格,则应该执行该部分。可能是synthax错误或类似的错误。任何帮助都将不胜感激

@ECHO关闭
SETLOCAL DISABLEDELAYEDEXPANSION
>“%~dpn1_2.txt”(
对于('find/V/N”“%1')中的/F“tokens=1*delims=]”%%j,请执行以下操作(
设置“currentLine=%%k”
SETLOCAL ENABLEDELAYEDEXPANSION
如果“!currentLine:~0,2!”==”;“(
设置开始=1
)否则,如果“!currentLine:~0,3!”==“80/”(
如果“!开始!”==“1”(
设置“currentLine=!currentLine:~0,2!!currentLine:~3,5!!currentLine:~18!”
启动=
)否则(
设置字符串=!currentLine:~0,2!!currentLine:~3,4!
查找“!string!”labels.txt>nul
如果!错误级别!等于0(
设置“currentLine=!currentLine:~0,2!!currentLine:~3,5!!currentLine:~18!”
)否则(
设置“currentLine=!currentLine:~18!”
)
)
)
回声(!currentline!
端部
)
)
@ECHO OFF
SETLOCAL DISABLEDELAYEDEXPANSION
>“%~dpn1_2.txt”(
对于('find/V/N”“%1')中的/F“tokens=1*delims=]”%%j,请执行以下操作(
设置“currentLine=%%k”
SETLOCAL ENABLEDELAYEDEXPANSION
如果“!currentLine:~0,3!”==“80/”(
如果“!上一行:~0,2!”==”;”(
设置“currentLine=!currentLine:~0,2!!currentLine:~3,5!!currentLine:~18!”
)否则(
设置字符串=!currentLine:~0,2!!currentLine:~3,4!
查找“!string!”labels.txt>nul
如果!错误级别!等于0(
设置“currentLine=!currentLine:~0,2!!currentLine:~3,5!!currentLine:~18!”
)否则(
设置“currentLine=!currentLine:~18!”
)
)
)
回声(!currentline!
端部
设置“上一行=%%k”
)
)
@ECHO OFF
SETLOCAL DISABLEDELAYEDEXPANSION
>“%~dpn1_2.txt”(
对于('find/V/N”“%1')中的/F“tokens=1*delims=]”%%j,请执行以下操作(
设置“currentLine=%%k”
SETLOCAL ENABLEDELAYEDEXPANSION
如果“!currentLine:~0,3!”==“80/”(
如果“!上一行:~0,2!”==”;”(
设置“currentLine=!currentLine:~0,2!!currentLine:~3,5!!currentLine:~18!”
)否则(
设置字符串=!currentLine:~0,2!!currentLine:~3,4!
查找“!string!”labels.txt>nul
如果!错误级别!等于0(
设置“currentLine=!currentLine:~0,2!!currentLine:~3,5!!currentLine:~18!”
)否则(
设置“currentLine=!currentLine:~18!”
)
)
)
回声(!currentline!
端部
设置“上一行=%%k”
)
)

如果在batch@SomethingDark,
否则如果
工作正常…谢尔顿,问题是,对于每一行,你都在做
setlocal
,一堆其他的废话,然后
endlocal
,因为对特定行的解析已经完成。当你阅读下一行时,
endlocal
会有错误ged所有您设置的变量,包括
!START!
。最简单的解决方案可能是在启用延迟扩展的情况下运行整个脚本,而不是切换它,除非您担心使用感叹号。如果您需要,您还可以使用一系列具有两倍百分比的
调用来延迟扩展。有如果您不喜欢,您可以使用其他技巧。您可以将
endlocal
替换为
if-defined START(endlocal&set START=1)else-endlocal
,因此
START
endlocal
之后转移到环境中;或者您可以完全省略
START
,声明类似
set>的内容“上一行=%%k"
after
endlocal
和procesa都是
previousLine
currentLine
同时使用嵌套的
if
查询…@somethingshigh,我不同意;after
else
可以像其他命令一样放置
if
;甚至可以作为替代方法提高代码的易读性可能是
if…goto
更难理解的构造;是(嵌套)可读性的最重要前提条件
if
/
else
查询是正确的代码缩进…在中没有
else if
batch@SomethingDark,
否则如果
工作正常…Sheldon,问题是对于每一行,你都在做
setlocal
,一堆其他的废话,然后
endlocal
,因为对该行的解析已经完成e、 当您阅读下一行时,
endlocal
将清除您设置的所有变量,包括
!START!
。最简单的解决方案可能是在启用延迟扩展的情况下运行整个脚本,而不是切换它,除非您担心使用感叹号。如果您需要,还可以使用一系列de>调用
s并增加两倍的百分比以延迟扩展。如果不合适,可以使用其他技巧。如果定义了开始(endlocal&set START=1),可以用
替换
endlocal
else endlocal
,因此
START
endlocal
之后被传输到环境中;或者您可以完全省略
START
,声明类似
set“previousLine=%%k”的内容
after
endlocal
和procesa都是
previousLine
currentLine
同时使用嵌套的
if
查询…@somethingshigh,我不同意;after
else
可以像其他命令一样放置
if
;甚至可以作为替代方法提高代码的易读性如果…goto结构可能更难理解,则可能是
;可读性最重要的先决条件