Board logo

标题: [其他] 嵌套cmd输出变量不能 [打印本页]

作者: BingjianREMIX    时间: 2023-7-10 17:45     标题: 嵌套cmd输出变量不能

我用bat写了一个嵌套cmd,正常cmd能够输出%systemroot%为c:\windows,但bat不行,如何使嵌套cmd识别是否是变量,并输出正常,同cmd一致
作者: Batcher    时间: 2023-7-14 19:11

回复 1# BingjianREMIX


    请把代码发出来看看
作者: BingjianREMIX    时间: 2023-7-14 19:14

回复 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
复制代码
可能跟变量拓展有关系吧
作者: dimo    时间: 2023-7-14 21:45

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

作者: BingjianREMIX    时间: 2023-7-14 21:50

回复 4# dimo


    我最近正好在研究大佬的帖子http://www.bathome.net/thread-2899-1-1.html
作者: BingjianREMIX    时间: 2023-7-14 21:54

之后在代码里加了变量延迟拓展,还是没有用,变量延迟拓展跟它...
作者: dimo    时间: 2023-7-14 21:57

回复 6# BingjianREMIX


    我是简单试了一下,,用call %a%之后就显示了正确结果
作者: BingjianREMIX    时间: 2023-7-14 22:01

回复 7# dimo


    哦?哪里加的call正常了
作者: dimo    时间: 2023-7-14 22:13

回复 8# BingjianREMIX


    直接在else后面加
  1. set "a=x" & if /i "%a%" equ "x" (
  2. goto :microdos2
  3. ) else call %a%
复制代码
正常来说哪个语句需要call,还得加个判断之类的,避免其他命令出错.
作者: Batcher    时间: 2023-7-14 22:22

回复 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
复制代码

作者: BingjianREMIX    时间: 2023-7-14 23:19

回复 10# Batcher


    那其它命令怎么兼容
作者: 77七    时间: 2023-7-15 10:07

  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
复制代码

作者: Batcher    时间: 2023-7-15 19:23

回复 11# BingjianREMIX


    那就多读几遍5楼链接




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