我正在使用下面的批处理脚本并收到错误
(此时出乎意料.
我知道问题出在第一行,但我不明白出了什么问题.有任何想法吗 ?
脚本:
IF [%1]==[] (
:LOOP1
SET /P isDefault=Value Missing, do you want to use default values [1,1,10,Local Area Connection 2]?[y/n]
IF %isDefault%==y (
SET from=1
SET step=1
SET to=10
SET lan="Local Area Connection 2"
GOTO :USERLOOP
)
IF %isDefault%==n GOTO :END
GOTO :LOOP1
)
Run Code Online (Sandbox Code Playgroud) @echo on并且在批处理文件中@echo off的括号内if块中执行时似乎没有任何影响.这是一个简单的演示:
@echo off
echo Test #1
if 1 == 1 (
@echo on
echo Test #2
@echo off
echo Test #3
)
@echo on
echo Test #4
Run Code Online (Sandbox Code Playgroud)
在命令行上运行上面的输出是:
测试#1
测试#2
测试#3
C:\ mybatchfilelocation> echo测试#4
测试#4
任何人都可以解释这个和/或建议一个解决方法吗?(期望它可能通过大量使用goto和标签来修复,但如果可能的话,我更愿意继续使用括号格式...)
相关代码如下所示:
cd /d %~dp0
if exist filename.txt (
echo %date% %time% *** text... >> filename2.txt
echo ==============================
echo === text....... ===
echo === text....... ===
echo === text....... (text...) ===
echo === text (text...
echo === text...).
:loop
set /p "varx= text: "
if "%varx%" neq "xxxx" goto loop
... more script...
)
Run Code Online (Sandbox Code Playgroud)
到处寻找解决方案......
在这里指向 If 语句分组的方向: https: //www.petri.com/forums/forum/windows-scripting/general-scripting/57625-if-exists-file-was-unexpected-at-this-time -不可以
指出了 If 块中循环问题的方向,这里: (Windows 批处理)Goto inside if 块的行为非常奇怪 - 不去
被指出使用@setlocalenabledelayedexpansion或@setlocalenableextensions的方向(无法追踪到哪里) - 不行
尝试通过 set /p varfile="filename" 传递文件名,如果存在 %varfile% - …