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

[文本处理] 批处理变量该如何传递,有没有这方面的教程啊?

[复制链接]
发表于 2019-8-5 11:29:45 | 显示全部楼层 |阅读模式
  1. @echo off
  2. for /f "skip=1 tokens=2,4-7" %%a in ('echo list disk^|diskpart^|find "磁盘"') do (
  3.     if "%%b%%c" == "%%d%%e" echo %%a&echo %%b
  4. )
复制代码
我下面的语句需要用到%%a 和%%b ,请问这个变量要怎么传递下去,因为跳出for语句后就变量不就能用了,我尝试开启了变量延迟,没有用
发表于 2019-8-5 12:34:27 | 显示全部楼层
set StrA=%%a
set StrB=%%b
for循环里面加上赋值语句试试
 楼主| 发表于 2019-8-5 15:33:53 | 显示全部楼层
回复 2# Batcher


    不懂这个的作用
 楼主| 发表于 2019-8-5 15:34:14 | 显示全部楼层
回复 2# Batcher


   有关于变量传递的教程吗?
发表于 2019-8-5 15:51:48 | 显示全部楼层
回复 3# lihui612ld
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "skip=1 tokens=2,4-7" %%a in ('echo list disk^|diskpart^|find "磁盘"') do (
  4.     if "%%b%%c" == "%%d%%e" (
  5.         set StrA=%%a
  6.         set StrB=%%b
  7.         echo !StrA!
  8.         echo !StrB!
  9.     )
  10. )
  11. echo for命令执行完毕之后:
  12. echo !StrA!
  13. echo !StrB!
  14. pause
复制代码
先试试这个代码是否达到了预期效果
然后咱再讨论具体哪里没看懂
 楼主| 发表于 2019-8-5 17:00:28 | 显示全部楼层
回复 5# Batcher


  可以,功能正常执行,我能看懂意思,但不知道为什么要这样
发表于 2019-8-5 18:05:37 | 显示全部楼层
回复 1# lihui612ld

这个问题我也是想问的啊,谢谢。
发表于 2019-8-5 18:27:32 | 显示全部楼层
回复 7# netdzb


for命令教程第28页
http://bbs.bathome.net/thread-31727-1-1.html
 楼主| 发表于 2019-8-5 19:21:39 | 显示全部楼层
回复 8# Batcher


    这也是在for 里面的啊,只是把%%i的值赋给了str  看来我只能记住这个方法了,理解不了
发表于 2019-8-5 20:28:57 | 显示全部楼层
回复 9# lihui612ld


    因为 "跳出 for 循环后变量 %%a 和 %%b 就不就能用了",所以需要在 for 循环中设置中间变量 strA 和 strB
因为 "跳出 for 循环后变量 strA 和 strB 任然可以引用",所以达到了你的变量 "传递" 的目的。
发表于 2019-8-5 20:48:37 | 显示全部楼层
回复 9# lihui612ld


%%i 是控制变量,作用域仅限于for循环内部。
str 是普通变量,默认都是全局变量,作用域是整个bat脚本
发表于 2019-8-5 21:12:30 | 显示全部楼层
用 call “传递”变量:
  1. @echo off
  2. for /f "skip=1 tokens=2,4-7" %%a in ('echo list disk^|diskpart^|find "磁盘"') do (
  3.     if "%%b%%c" == "%%d%%e" call :Label %%a %%b
  4. )
  5. pause & exit

  6. :Label
  7. echo %1
  8. echo %2
复制代码
 楼主| 发表于 2019-8-6 12:49:08 | 显示全部楼层
回复 12# WHY


    用call传递不知道是我写的有问题还是什么情况,没有成功,显卡的是%1
 楼主| 发表于 2019-8-6 12:49:57 | 显示全部楼层
回复 10# WHY


    这样就好理解了,懂了,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 06:16 , Processed in 0.021241 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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