Windows 批处理变量集,但之后立即变为空
因此,我有一段批处理代码:Windows 批处理变量集,但之后立即变为空,windows,variables,batch-file,for-loop,Windows,Variables,Batch File,For Loop,因此,我有一段批处理代码: SET "ACTSESS=%tmp%\activesessions.txt" NET USE > %ACTSESS% setlocal EnableDelayedExpansion FOR /F "tokens=2 delims= " %%A IN (%ACTSESS%) DO ( SET "BB=%%A" ECHO %BB% IF /I "!BB:~0,2!" EQU "\\"
SET "ACTSESS=%tmp%\activesessions.txt"
NET USE > %ACTSESS%
setlocal EnableDelayedExpansion
FOR /F "tokens=2 delims= " %%A IN (%ACTSESS%) DO (
SET "BB=%%A"
ECHO %BB%
IF /I "!BB:~0,2!" EQU "\\" SET "SESSDEL=%BB%"
NET USE /delete %SESSDEL% /DELETE
ECHO.
ECHO -----------------------------------------
ECHO %SESSDEL% Ended Successfully.
ECHO ----------------------------------------- )
)
SET BB=%%A
Set获取cmd屏幕上正确变量的子项-在本例中是这样的字符串:Set“BB=local”
,
但是紧接着ECHO%BB%
返回的%BB%
为空白
我做错什么了吗
更新好的,解决方案是我忘记放在for循环中延迟扩展后,使用code>代替%%
此代码用于删除windows上未映射的会话,而不是在许多计算机和共享上手动执行NET USE\\server\share/delete
,可以将其作为服务或任务运行。我确信有更好的方法,但还没有找到(与持久性和缓存登录有关),所以这是一个快速的解决方法。在(和括号内)下,您需要访问包含的变量而不是%
SET "ACTSESS=%tmp%\activesessions.txt"
NET USE > %ACTSESS%
setlocal EnableDelayedExpansion
FOR /F "tokens=2 delims= " %%A IN (%ACTSESS%) DO (
SET "BB=%%A"
ECHO !BB!
IF /I "!BB:~0,2!" EQU "\\" SET "SESSDEL=!BB!"
NET USE /delete !SESSDEL! /DELETE
ECHO.
ECHO -----------------------------------------
ECHO !SESSDEL! Ended Successfully.
ECHO ----------------------------------------- )
)
现在,您只需要一些文本来解释为什么您发布的代码是必需的。等等,等等,它起作用了,谢谢!我会补充一点说明,以防有人觉得这很有用。