你如何setlocal
在批处理文件中使用?我只是在学习脚本,并希望用非常简单的术语向我解释它。
我有一个脚本停止并说它< was unexpected at this time
可能与setlocal
脚本中没有任何语句有关。
你如何setlocal
在批处理文件中使用?我只是在学习脚本,并希望用非常简单的术语向我解释它。
我有一个脚本停止并说它< was unexpected at this time
可能与setlocal
脚本中没有任何语句有关。
你做第一行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
最常见的用法SETLOCAL
是打开命令扩展并允许延迟扩展变量:
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
有关详细信息,SETLOCAL
请参阅 Microsoft TechNet 上的命令行参考。
直接链接到Setlocal
假设这段代码:
If "%getOption%" equ "yes" (
set /P option=Enter option:
echo Option read: %option%
)
以前的代码将不起作用,因为 %option% 值仅在解析 IF 命令时(在执行之前)被替换一次。您需要“延迟”变量值扩展,直到 SET /P 命令修改了变量值:
setlocal EnableDelayedExpansion
If "%getOption%" equ "yes" (
set /P option=Enter option:
echo Option read: !option!
)
检查这个:
set var=Before
set var=After & echo Normal: %var% Delayed: !var!
猜猜输出是什么...
尝试这个:
SET PATH=%PATH%;%~dp0;
这将获取您正在运行批处理的本地文件夹并将其添加到当前路径。
示例:如果您正在运行 a.bat
或.cmd
from d:\tools\mybatch.bat
,它将添加d:\tools
到当前路径,以便它可以在该文件夹中找到其他文件。