我注意到在大多数脚本中,两者通常在同一行中:
SETLOCAL ENABLEDELAYEDEXPANSION
Run Code Online (Sandbox Code Playgroud)
这两个实际上是单独的命令,可以写在不同的行上吗?
ENABLEDELAYEDEXPANSION如果脚本设置在脚本的第一行并且在脚本结束之前未禁用,那么设置是否会对脚本产生负面影响?
你如何setlocal在批处理文件中使用?我只是在学习脚本,并希望用非常简单的术语向我解释.
我有一个脚本停止并说它< was unexpected at this time可能与setlocal脚本中没有任何语句有关.
我正在编写一个批处理脚本来从文件中读取.该文件包含诸如token = value之类的行.我有代码来解析文件的每一行,它存储在%% i中.以下代码尝试提取令牌的值:
请注意,此脚本正在使用延迟扩展,如评论中所述.
for /f "tokens=1* delims==" %%a in ("%%i") do (
if "%%a"=="password" ( set password=%%b )
)
Run Code Online (Sandbox Code Playgroud)
如果令牌密码的值包含"!",那么"!" 被跳过,只有其余的字符串存储在变量密码中.例如,如果该行是:
密码=测试!
然后变量密码=测试.我试图以各种方式更改输入文件,批处理脚本读取除"!"之外的所有内容.我用过:
密码=测试%!
密码=测试%!
一切都跳过"!".知道如何用"!"读取字符串 变成一个变量?
我有一个问题如何在批处理文件中将多个文件设置为变量?我尝试用下面的脚本做一些事情:
move c:\*.gpg q:\
for %%F in ("q:\*.gpg") do (set file=%%~nxF)
if exist q:\*.gpg echo done copying files: %file%
Run Code Online (Sandbox Code Playgroud)
以上仅适用于一个文件。如果有两个以上,则仅回显其中之一。如何在一行中回显复制的所有文件?