![Board logo](images/default/logo.gif)
标题: [其他] [已解决]求助批处理代码解释 [打印本页]
作者: laiu888 时间: 2015-9-21 14:36 标题: [已解决]求助批处理代码解释
本帖最后由 pcl_test 于 2016-9-12 15:28 编辑
麻烦高人指点一下 _%a%和"_%a%=%a%"都代表啥意思,万分感谢- @echo off
- :begin
- set /a a=%random%%%20
- if defined _%a% goto begin
- set /p=%a% <nul
- set /a n+=1,"_%a%=%a%"
- if %n% lss 5 goto begin
- pause>nul
复制代码
作者: 尘丶 时间: 2015-9-21 14:46
回复 1# laiu888
set /a n+=1,"_%a%=%a%"
这句话的意思是set /a n=%n%+1和set /a _%a%=%a%
_%a%是设置_变量a
set /a _%a%=%a%
意思是计算_变量%a%等于变量%a%
你在后面加一个代码
set _
你就知道了
作者: flyinnet9 时间: 2015-9-21 14:50
把_当成str你就认识了,别当特殊符号
_%a%不认识,str%a%认识不?
作者: laiu888 时间: 2015-9-21 15:40
本帖最后由 laiu888 于 2015-9-21 15:50 编辑
回复 2# 尘丶
你的意思是_%a%是和%a%不同的另一个变量,对不?
那我把_%a%换成b怎么程序就不对了总出错?- @echo off
- :begin
- set /a a=%random%%%20
- if defined b goto begin
- set /p=%a% <nul
- set /a n+=1,b=%a%
- if %n% lss 5 goto begin
- pause>nul
复制代码
作者: laiu888 时间: 2015-9-21 15:52
回复 3# flyinnet9
_%a%=%a%
搞不懂为什么要换成这样做 ,如果换成其他变量怎么就出错?
作者: flyinnet9 时间: 2015-9-21 15:58
本帖最后由 flyinnet9 于 2015-9-21 16:03 编辑
回复 5# laiu888
因为_%a%是一个变量,同时是一个可变的变量
基于set /a a=%random%%%20
_%a%可能是_0------_19的任何一个
例:当a=1, set _%a%=%a%就是set _1=1,把“1”赋值给“_1”
作者: 尘丶 时间: 2015-9-21 16:04
回复 5# laiu888 - @echo off
- :begin
- set /a b=%random%%%20
- if defined _%b% goto begin
- set /p=%b% <nul
- set /a n+=1,_%b%=%b%
- if %n% lss 5 goto begin
- pause>nul
复制代码
- @echo off
- :begin
- set /a b=%random%%%20
- if defined %b% goto begin
- set /p=%b% <nul
- set /a n+=1,%b%=%b% 2>nul
- if %n% lss 5 goto begin
- pause>nul
复制代码
去掉echo off 自己体会下
因为变量b的值是固定的
_%b%这个%b%的值不是固定的
作者: laiu888 时间: 2015-9-21 16:52
回复 7# 尘丶
这个程序是明白了一些,你看看我写的这个代码,按理说应该显示两个1的,但第二个1总显示不出来,- @echo off
- set a=1
- set "_%a%=%a%"
- echo %a%
- call echo %_%a%%
复制代码
作者: 尘丶 时间: 2015-9-21 17:00
回复 8# laiu888 - @echo off
- set a=1
- set "_%a%=%a%"
- echo %a%
- call echo %%_%a%%%
- pause
复制代码
call要两层%- @echo off&setlocal enabledelayedexpansion
- set a=1
- set "_%a%=%a%"
- echo %a%
- echo !_%a%!
- pause
复制代码
或者开延迟变量
作者: laiu888 时间: 2015-9-21 17:35
回复 9# 尘丶
哦,明白了,谢谢尘丶
作者: laiu888 时间: 2015-9-21 17:35
回复 6# flyinnet9
谢谢flyinnet9
作者: 尘丶 时间: 2015-9-21 17:47
回复 11# laiu888
问题解决了,麻烦在帖子上标上[已解决]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |