[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 嵌套cmd输出变量不能

我用bat写了一个嵌套cmd,正常cmd能够输出%systemroot%为c:\windows,但bat不行,如何使嵌套cmd识别是否是变量,并输出正常,同cmd一致
QQ 1980286392

回复 1# BingjianREMIX


    请把代码发出来看看
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher
  1. @echo off
  2. title MICRODOS
  3. color 07
  4. cd /d %~dp0
  5. :microdos
  6. cls
  7. echo MICRODOS [Version 23H2 24.0.23707.1946]
  8. echo ^(C^) REMIX LASER RISING STUDIO. All rights reserved.
  9. echo.
  10. :microdos2
  11. set "a=x"
  12. set /p a=%cd%^>
  13. set "a=x" & if /i "%a%" equ "x" (
  14. goto :microdos2
  15. ) else %a%
  16. goto :microdos2
复制代码
可能跟变量拓展有关系吧
QQ 1980286392

TOP

理论上来讲,好像是因为变量扩展的原因,处理时只能扩展一次,而在处理%a%时已经进行过一次扩展,所以……
最近看了变量嵌套介绍的帖子,这里刚好有变量扩展相关的教程,我觉得可以参考来一下:
批处理脚本高级编程技巧——变量嵌套
三、只有了解变量扩展的优先级,才可能理解变量嵌套的用法。  
    变量嵌套扩展的方式有:……
netbenton 发表于 2009-11-28 19:01
Hope is a sad thing.
https://nsdimo.gitee.io/

TOP

回复 4# dimo


    我最近正好在研究大佬的帖子http://www.bathome.net/thread-2899-1-1.html
QQ 1980286392

TOP

之后在代码里加了变量延迟拓展,还是没有用,变量延迟拓展跟它...
QQ 1980286392

TOP

回复 6# BingjianREMIX


    我是简单试了一下,,用call %a%之后就显示了正确结果
Hope is a sad thing.
https://nsdimo.gitee.io/

TOP

回复 7# dimo


    哦?哪里加的call正常了
QQ 1980286392

TOP

回复 8# BingjianREMIX


    直接在else后面加
  1. set "a=x" & if /i "%a%" equ "x" (
  2. goto :microdos2
  3. ) else call %a%
复制代码
正常来说哪个语句需要call,还得加个判断之类的,避免其他命令出错.
Hope is a sad thing.
https://nsdimo.gitee.io/

TOP

回复 3# BingjianREMIX
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :microdos2
  4. set "a=x"
  5. set /p a=^>
  6. if /i "%a%" equ "x" (
  7.     goto :microdos2
  8. ) else (
  9.     call echo,!a!
  10. )
  11. goto :microdos2
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# Batcher


    那其它命令怎么兼容
QQ 1980286392

TOP

  1. @echo off
  2. :microdos2
  3. set /p a=%cd%^>
  4. if defined a (
  5. call echo %a%
  6. )
  7. set "a="
  8. goto :microdos2
复制代码
bat小白,请多指教!谢谢!

TOP

回复 11# BingjianREMIX


    那就多读几遍5楼链接
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表