标题: [其他] 嵌套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 - @echo off
- title MICRODOS
- color 07
- cd /d %~dp0
-
- :microdos
- cls
- echo MICRODOS [Version 23H2 24.0.23707.1946]
- echo ^(C^) REMIX LASER RISING STUDIO. All rights reserved.
- echo.
-
- :microdos2
- set "a=x"
- set /p a=%cd%^>
- set "a=x" & if /i "%a%" equ "x" (
- goto :microdos2
- ) else %a%
- 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后面加- set "a=x" & if /i "%a%" equ "x" (
- goto :microdos2
- ) else call %a%
复制代码
正常来说哪个语句需要call,还得加个判断之类的,避免其他命令出错.
作者: Batcher 时间: 2023-7-14 22:22
回复 3# BingjianREMIX - @echo off
- setlocal enabledelayedexpansion
- :microdos2
- set "a=x"
- set /p a=^>
- if /i "%a%" equ "x" (
- goto :microdos2
- ) else (
- call echo,!a!
- )
- goto :microdos2
复制代码
作者: BingjianREMIX 时间: 2023-7-14 23:19
回复 10# Batcher
那其它命令怎么兼容
作者: 77七 时间: 2023-7-15 10:07
- @echo off
- :microdos2
- set /p a=%cd%^>
- if defined a (
- call echo %a%
- )
- set "a="
- goto :microdos2
复制代码
作者: Batcher 时间: 2023-7-15 19:23
回复 11# BingjianREMIX
那就多读几遍5楼链接
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |