%ACTSESS% setlocal Enabl-6ren">
gpt4 book ai didi

windows - 批处理变量集,但之后立即变为空白

转载 作者:可可西里 更新时间:2023-11-01 10:35:49 24 4
gpt4 key购买 nike

所以,我有一段批处理代码:

    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=%%ASet 在 cmd 屏幕上被替换为适当的变量 - 在这种情况下是一个字符串,如下所示:SET "BB=local",但在 ECHO %BB% 之后立即将 %BB% 返回为空白。

我是不是做错了什么?

更新 好的,解决方案是我在 for 循环延迟扩展后忘记放 !! 而不是 %%

此代码用于删除 Windows 上的未映射 session ,而不是在许多机器和共享上手动执行 NET USE\\server\share/DELETE,想到运行这个作为服务或任务。我确信有更好的方法,但还没有弄清楚(与持久性和缓存登录有关),因此这是一个快速的解决方法。

最佳答案

delayed expansion (在括号内)您需要访问用 ! 而不是 %

括起来的变量
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 ----------------------------------------- )
)

关于windows - 批处理变量集,但之后立即变为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27387611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com