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

[其他] [已解决]求助批处理代码解释

本帖最后由 pcl_test 于 2016-9-12 15:28 编辑

麻烦高人指点一下 _%a%和"_%a%=%a%"都代表啥意思,万分感谢
  1.     @echo off
  2.     :begin
  3.     set /a a=%random%%%20
  4.     if defined _%a% goto begin
  5.     set /p=%a% <nul
  6.     set /a n+=1,"_%a%=%a%"
  7.     if %n% lss 5 goto begin
  8.     pause>nul
复制代码
1

评分人数

    • pcl_test: 感谢给帖子标题标注[已解决]字样PB + 2

回复 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 _
你就知道了
1

评分人数

心累~努力,为了美好的明天。

TOP

把_当成str你就认识了,别当特殊符号
_%a%不认识,str%a%认识不?
1

评分人数

TOP

本帖最后由 laiu888 于 2015-9-21 15:50 编辑

回复 2# 尘丶

你的意思是_%a%是和%a%不同的另一个变量,对不?
那我把_%a%换成b怎么程序就不对了总出错?
  1.     @echo off
  2.     :begin
  3.     set /a a=%random%%%20
  4.     if defined b goto begin
  5.     set /p=%a% <nul
  6.     set /a n+=1,b=%a%
  7.     if %n% lss 5 goto begin
  8.     pause>nul
复制代码

TOP

回复 3# flyinnet9


  _%a%=%a%
搞不懂为什么要换成这样做 ,如果换成其他变量怎么就出错?

TOP

本帖最后由 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”

TOP

回复 5# laiu888
  1.     @echo off
  2.     :begin
  3.     set /a b=%random%%%20
  4.     if defined _%b% goto begin
  5.     set /p=%b% <nul
  6.     set /a n+=1,_%b%=%b%
  7.     if %n% lss 5 goto begin
  8.     pause>nul
复制代码
  1.     @echo off
  2.     :begin
  3.     set /a b=%random%%%20
  4.     if defined %b% goto begin
  5.     set /p=%b% <nul
  6.     set /a n+=1,%b%=%b% 2>nul
  7.     if %n% lss 5 goto begin
  8.     pause>nul
复制代码
去掉echo off 自己体会下
因为变量b的值是固定的
_%b%这个%b%的值不是固定的
心累~努力,为了美好的明天。

TOP

回复 7# 尘丶


    这个程序是明白了一些,你看看我写的这个代码,按理说应该显示两个1的,但第二个1总显示不出来,
  1. @echo off
  2. set a=1
  3. set "_%a%=%a%"
  4. echo %a%  
  5. call echo %_%a%%
复制代码

TOP

回复 8# laiu888
  1. @echo off
  2. set a=1
  3. set "_%a%=%a%"
  4. echo %a%  
  5. call echo %%_%a%%%
  6. pause
复制代码
call要两层%
  1. @echo off&setlocal enabledelayedexpansion
  2. set a=1
  3. set "_%a%=%a%"
  4. echo %a%  
  5. echo !_%a%!
  6. pause
复制代码
或者开延迟变量
心累~努力,为了美好的明天。

TOP

回复 9# 尘丶


    哦,明白了,谢谢尘丶

TOP

回复 6# flyinnet9


    谢谢flyinnet9

TOP

回复 11# laiu888


    问题解决了,麻烦在帖子上标上[已解决]
心累~努力,为了美好的明天。

TOP

返回列表