【发布时间】:2015-02-07 20:33:44
【问题描述】:
所以,我有一段批处理代码:
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循环中延迟扩展后忘记输入!!而不是%%。
此代码用于删除 Windows 上的 未映射 会话,而不是在许多机器和共享上手动执行 NET USE \\server\share /DELETE,将其作为服务或任务运行。我确定有更好的方法,但还没有想出来(与持久性和缓存登录有关),所以它是一种快速的解决方法。
【问题讨论】:
标签: windows variables batch-file for-loop