你如何setlocal
在批处理文件中使用?我只是在学习脚本,并希望用非常简单的术语向我解释.
我有一个脚本停止并说它< was unexpected at this time
可能与setlocal
脚本中没有任何语句有关.
Ken*_*ite 24
你做第一行SETLOCAL
.此示例来自以下链接文章:
rem *******Begin Comment**************
rem This program starts the superapp batch program on the network,
rem directs the output to a file, and displays the file
rem in Notepad.
rem *******End Comment**************
@echo off
setlocal
path=g:\programs\superapp;%path%
call superapp>c:\superapp.out
endlocal
start notepad c:\superapp.out
Run Code Online (Sandbox Code Playgroud)
最常用的SETLOCAL
是打开命令扩展并允许延迟扩展变量:
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
Run Code Online (Sandbox Code Playgroud)
有关详细信息,SETLOCAL
请参阅Microsoft TechNet 上的命令行参考.
直接链接到Setlocal
Aac*_*ini 11
假设这段代码:
If "%getOption%" equ "yes" (
set /P option=Enter option:
echo Option read: %option%
)
Run Code Online (Sandbox Code Playgroud)
以前的代码将不起作用因为在解析IF命令时(在执行之前)只更换一次%选项%值.您需要"延迟"变量值扩展,直到SET/P命令修改了变量值:
setlocal EnableDelayedExpansion
If "%getOption%" equ "yes" (
set /P option=Enter option:
echo Option read: !option!
)
Run Code Online (Sandbox Code Playgroud)
检查一下:
set var=Before
set var=After & echo Normal: %var% Delayed: !var!
Run Code Online (Sandbox Code Playgroud)
猜猜输出是什么......