Batch file 试图理解此代码(批处理,CMD)
非常新的批处理,有人可以在这里解释一些事情:Batch file 试图理解此代码(批处理,CMD),batch-file,cmd,Batch File,Cmd,非常新的批处理,有人可以在这里解释一些事情: setlocal enabledelayedexpansion在这个特定实例中做什么 usebackq做什么?(我试过查这个,但不太明白) 变量%%g是如何初始化的,它是全局的还是局部的 谢谢你抽出时间 延迟扩展将导致变量在执行时而不是在分析时扩展。 下面的代码似乎是第二秒的回声,但它会打印第一秒的回声 @echo off setlocal enabledelayedexpansion ::just a sample adapter here
下面的代码似乎是第二秒的回声,但它会打印第一秒的回声
@echo off
setlocal enabledelayedexpansion
::just a sample adapter here:
set "adapter=Ethernet adapter Local Area Connection"
set adapterfound=false
echo Network Connection Test
for /f "usebackq tokens=1-2 delims=:" %%f in (`ipconfig /all`) do
(
set "item=%%f"
if /i "!item!"=="!adapter!"
(
set adapterfound=true
)
else if not "!item!"=="!item:IP Address=!" if "!adapterfound!"=="true"
(
echo Your IP Address is: %%g
set adapterfound=false
)
)
资料来源:usebackq
强制for循环使用反引号(`dir`
)计算其中的命令,并使用for
循环的输出,而不是打开文件。这将列出带星号的文档的所有元素
setlocal EnableDelayedExpansion
set var=first
set var=second & Echo %var% !var!
%%i
仅在for
循环中定义,无需额外初始化我仍然不明白%%g变量是如何用IP地址初始化的,它是如何工作的,我如何将它存储在全局变量中?。还有,延迟扩展的好处是什么,为什么这个人决定这样实现代码?不过,所有的解释都很好,谢谢!如果没有
setlocal enabledelayedexpansion
,项
变量在循环完成之前不会有值,因为它是在for
循环内部初始化的<代码>%%g是由循环的标记=1-2
位创建的。该位声明了两个变量,由于您是从%%f
开始的,因此具有次高ASCII值的字符是%%g
。我不知道为什么要使用usebackq
;除了个人喜好之外,它没有理由存在。我仍然不知道它是如何真正得到它的价值的。首先提到的只是回音。实际上脚本无法工作,因为存在一些语法错误:for。。。do(
,如果…(
,)else(
)(括号不能放在单独的行中!)我建议阅读。
echo Documents:
for /f "usebackq" %%i in (`dir /b "C:\Users\%username%\Documents\"`) do (
echo * %%i
)
pause