Board logo

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

作者: lihui612ld    时间: 2019-8-5 11:29     标题: 批处理变量该如何传递,有没有这方面的教程啊?

  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语句后就变量不就能用了,我尝试开启了变量延迟,没有用
作者: Batcher    时间: 2019-8-5 12:34

set StrA=%%a
set StrB=%%b
for循环里面加上赋值语句试试
作者: lihui612ld    时间: 2019-8-5 15:33

回复 2# Batcher


    不懂这个的作用
作者: lihui612ld    时间: 2019-8-5 15:34

回复 2# Batcher


   有关于变量传递的教程吗?
作者: Batcher    时间: 2019-8-5 15:51

回复 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
复制代码
先试试这个代码是否达到了预期效果
然后咱再讨论具体哪里没看懂
作者: lihui612ld    时间: 2019-8-5 17:00

回复 5# Batcher


  可以,功能正常执行,我能看懂意思,但不知道为什么要这样
作者: netdzb    时间: 2019-8-5 18:05

回复 1# lihui612ld

这个问题我也是想问的啊,谢谢。
作者: Batcher    时间: 2019-8-5 18:27

回复 7# netdzb


for命令教程第28页
http://bbs.bathome.net/thread-31727-1-1.html
作者: lihui612ld    时间: 2019-8-5 19:21

回复 8# Batcher


    这也是在for 里面的啊,只是把%%i的值赋给了str  看来我只能记住这个方法了,理解不了
作者: WHY    时间: 2019-8-5 20:28

回复 9# lihui612ld


    因为 "跳出 for 循环后变量 %%a 和 %%b 就不就能用了",所以需要在 for 循环中设置中间变量 strA 和 strB
因为 "跳出 for 循环后变量 strA 和 strB 任然可以引用",所以达到了你的变量 "传递" 的目的。
作者: Batcher    时间: 2019-8-5 20:48

回复 9# lihui612ld


%%i 是控制变量,作用域仅限于for循环内部。
str 是普通变量,默认都是全局变量,作用域是整个bat脚本
作者: WHY    时间: 2019-8-5 21:12

用 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
复制代码

作者: lihui612ld    时间: 2019-8-6 12:49

回复 12# WHY


    用call传递不知道是我写的有问题还是什么情况,没有成功,显卡的是%1
作者: lihui612ld    时间: 2019-8-6 12:49

回复 10# WHY


    这样就好理解了,懂了,谢谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2