Board logo

标题: cmd /v:on命令怎样开启变量延迟? [打印本页]

作者: stu_p    时间: 2011-11-19 17:16     标题: cmd /v:on命令怎样开启变量延迟?

  1. set b=1
  2. cmd /v:on /k echo !b!
  3. echo !b!
  4. pause
  5. echo !b!
  6. pause
复制代码
执行完第一个echo !b!后
pause
echo !b!
pause
这3句就没执行!!
我的意思是如何在后面其他语句继续引用变量!b!

最好是哪位老师讲一下cmd /vn /v:off /c /k /s /q...的用法
或者说替代enabledelayedexpansion的用法。
作者: CrLf    时间: 2011-11-19 17:53

父进程 cmd.exe(未开启变量延迟)
cmd /vn /k echo !b! 启用子进程 cmd.exe,在子进程中,变量延迟是被开启的
子进程运行结束,返回父进程,由于父子进程相互独立,所以此时父进程的变量延迟还是未开启的

如果不想使用 setlocal enabledelayedexpansion 来开启变量延迟,可以用 %1 cmd /v /c %0 : 来代替,但是代价是要花掉启动外部命令的时间,而且会出现两个 cmd 进程...




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2