标题: [系统相关] 批处理命令set 如何查看指定变量? [打印本页]
作者: verbs 时间: 2020-2-27 11:48 标题: 批处理命令set 如何查看指定变量?
如上图我想仅查看 test_1 变量,却显示了 test_1 和 test_10,请问没有办法只显示 test_1?
万分感谢。
作者: Batcher 时间: 2020-2-27 12:17
回复 1# verbs
set命令的特性决定了它无法像你希望的那样工作:
SET command invoked with just a variable name, no equal sign or value
will display the value of all variables whose prefix matches the name
given to the SET command. For example:
SET P
would display all variables that begin with the letter 'P'
有什么特别的原因必须要用set而不能用echo吗:复制代码
作者: verbs 时间: 2020-2-27 12:44
本帖最后由 verbs 于 2020-2-27 13:32 编辑
感谢大神指点,
我希望根据变量名不同,取到不是的变量值,所以不无法直接使用 echo
测试脚本如下:- @echo off
- set index=1
- :loop_get_value
- set test=test_%index%
- set | findstr /i /b "\<%test%\>">nul || goto parameters_error
- for /f "usebackq delims== tokens=2" %%i in (`set %test%`) do (
- echo %%i
- )
- set /a index+=1
- goto loop_get_value
-
- :parameters_error
- echo 参数不存在
- pause
- goto lable_exit
-
- :lable_exit
复制代码
有没有其它办法,可以实现类似效果,感谢指点
作者: Batcher 时间: 2020-2-27 13:05
回复 3# verbs
不知道这个代码是想表达什么意图
但是执行到第5行的时候肯定会 goto parameters_error
第6行永远不会被执行到
作者: verbs 时间: 2020-2-27 13:31
回复 4# Batcher
是的这段代码没有实际意义,主是要实现取的变量的变量值(....>o<.... 有点绕)
第五行,不是肯定执行到 goto parameters_erro, 当前的表达式为真时不会执 || 后面的表达式
所以的第六行可以被执行到
作者: zaqmlp 时间: 2020-2-27 14:01
本帖最后由 zaqmlp 于 2020-2-27 14:02 编辑
开延迟就行了,判断存不存在可用define- set a=1
- set b_1=2
- call echo;%%b_%a%%%
- setlocal enabledelayedexpansion
- echo;!b_%a%!
- pause
复制代码
作者: Batcher 时间: 2020-2-27 16:54
回复 5# verbs
有几个变量嵌套的例子可以参考一下
http://bbs.bathome.net/thread-2899-1-1.html
作者: verbs 时间: 2020-3-18 14:59
回复 7# Batcher
非常感谢,学习了。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |