批处理问题:SET 命令在 FOR 循环中失效 / SET 环境变量生存域/作用域
来源:互联网 发布:药店gsp认证软件 编辑:程序博客网 时间:2024/06/04 01:35
我在 FOR 循环中用 SET 为一个环境变量赋值,结果发现该变量始终为空内容,不知何故
比如在下面的代码中:
1、第一个 for 语句我是打算取得 YYMMDD 格式的日期,在 for 语句内部的 SET TODAY_FOLDER 语句得不到 TODAY 的值,然而如果放在 for 语句后面就可以
2、第二、第三两个嵌套 for 语句我打算得到一组 IP 地址,然而 echo 用户端IP是%THE_CLIENT_IP% 得到的仍然是空的
代码:
@echo off
FOR /F "tokens=1-3 delims=- " %%i IN ('date /t') DO (
SET TODAY=%%i%%j%%k
SET TODAY_FOLDER=%TODAY:~2%
)
REM 如果
REM SET TODAY_FOLDER=%TODAY:~2%
REM IP 段:15?-18?,其中 ? 取值范围 [1-9](因每排只有 9 个)
for /L %%i in (5,1,8) do (
for /L %%j in (1,1,9) do (
SET THE_CLIENT_IP=192.168.115.1%%i%%j
echo %ERRORLEVEL% ClientIP=[%THE_CLIENT_IP%] 192.168.115.1%%i%%j
)
)
REM endlocal
@echo on
第二行这样写
FOR /F " usebackq tokens=1-3 delims=- " %%i IN (`date/t`) DO (
echo %ERRORLEVEL% ClientIP=[%THE_CLIENT_IP%] 192.168.115.1%%i%%j 字串8
改为:
cmd /v:on /c echo %ERRORLEVEL% ClientIP=[!THE_CLIENT_IP!] 192.168.115.1%%i%%j
cmd /v
@echo off
FOR /F "tokens=1-3 delims=- " %%i IN ('date /t') DO (
SET TODAY=%%i%%j%%k
echo !TODAY!
SET TODAY_FOLDER=!TODAY:~2!
echo !TODAY_FOLDER!
)
说白了就是启用/v :on
用help cmd命令得到以下说明:
/V:ON 将 ! 作为定界符启动延缓环境变量扩展。如: /V:ON 会允许 !var! 在执行时允许 !var! 扩展变量 var。var 语法在输入时扩展变量,这与在一个 FOR 循环内不同。
延迟环境变量扩展不按默认值启用。您可以用/V:ON 或 /V:OFF开关,为 CMD.EXE 的某个调用而启用或停用延迟环境变量扩展。
您可以在机器上和/或用户登录会话上启用或停用 CMD.EXE 所有调用的延迟扩展,这要通过设置使用 REGEDT.EXE 的注册表中的一个或两个 REG_DWORD 值:
HKEY_LOCAL_MACHINE/Software/Microsoft/Command Processor/DelayedExpansion
和/或
HKEY_CURRENT_USER/Software/Microsoft/Command Processor/DelayedExpansion
到 0x1 或 0x0。用户特定设置比机器设置有优先权。命令行开关比注册表设置有优先权。
如果延迟环境变量扩展被启用,惊叹号字符可在执行时间,被用来代替一个环境变量的数值。
- 批处理问题:SET 命令在 FOR 循环中失效 / SET 环境变量生存域/作用域
- “SET 命令设置的环境变量在 FOR 循环中始终为空”问题的原因与解决方法
- 批处理set命令注意事项
- windows批处理set命令
- windows批处理set命令
- bat批处理 set命令
- 批处理--set命令详解
- windows 批处理命令 set
- for循环作用域问题
- for 循环作用域问题
- SET命令--环境变量设置
- ES6 中 let的在for循环中变量作用域问题的探讨
- 批处理入门 -- set命令详解
- 批处理命令set /p是什么意思
- 批处理——set命令
- 批处理——set命令
- 批处理——set命令
- DOS命令 For Set
- java 多线程入门
- 求数据库中所有带数据的表
- 国际化编程
- 经典问题
- Silverlight Toolkit 正式版今天发布啦!
- 批处理问题:SET 命令在 FOR 循环中失效 / SET 环境变量生存域/作用域
- openssl简明使用手册
- 大象--Thinking in UML早知道 -- 007 -- 类图
- 小学生造句(转)
- 批处理中读取文本文件作为参数
- 平平淡淡才是真
- ThinkPad T61 安装XP系统后总是提示“PC内存控制器”的问题
- SQL 的 十大保留字
- status框架下获得上传的本地路径