找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24911|回复: 11

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

[复制链接]
发表于 2015-9-21 14:36:05 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码

评分

参与人数 1PB +2 收起 理由
pcl_test + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-9-21 14:46:17 | 显示全部楼层
回复 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技术 +1 收起 理由
laiu888 + 1 乐于助人

查看全部评分

发表于 2015-9-21 14:50:25 | 显示全部楼层
把_当成str你就认识了,别当特殊符号
_%a%不认识,str%a%认识不?

评分

参与人数 1技术 +1 收起 理由
laiu888 + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-9-21 15:40:40 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2015-9-21 15:52:12 | 显示全部楼层
回复 3# flyinnet9


  _%a%=%a%
搞不懂为什么要换成这样做 ,如果换成其他变量怎么就出错?
发表于 2015-9-21 15:58:16 | 显示全部楼层
本帖最后由 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:12 | 显示全部楼层
回复 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%的值不是固定的
 楼主| 发表于 2015-9-21 16:52:06 | 显示全部楼层
回复 7# 尘丶


    这个程序是明白了一些,你看看我写的这个代码,按理说应该显示两个1的,但第二个1总显示不出来,

  1. @echo off
  2. set a=1
  3. set "_%a%=%a%"
  4. echo %a%  
  5. call echo %_%a%%
复制代码
发表于 2015-9-21 17:00:54 | 显示全部楼层
回复 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
复制代码
或者开延迟变量
 楼主| 发表于 2015-9-21 17:35:16 | 显示全部楼层
回复 9# 尘丶


    哦,明白了,谢谢尘丶
 楼主| 发表于 2015-9-21 17:35:41 | 显示全部楼层
回复 6# flyinnet9


    谢谢flyinnet9
发表于 2015-9-21 17:47:16 | 显示全部楼层
回复 11# laiu888


    问题解决了,麻烦在帖子上标上[已解决]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 03:49 , Processed in 0.033460 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表