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

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

  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语句后就变量不就能用了,我尝试开启了变量延迟,没有用

set StrA=%%a
set StrB=%%b
for循环里面加上赋值语句试试
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    不懂这个的作用

TOP

回复 2# Batcher


   有关于变量传递的教程吗?

TOP

回复 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
复制代码
先试试这个代码是否达到了预期效果
然后咱再讨论具体哪里没看懂
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher


  可以,功能正常执行,我能看懂意思,但不知道为什么要这样

TOP

回复 1# lihui612ld

这个问题我也是想问的啊,谢谢。

TOP

回复 7# netdzb


for命令教程第28页
http://bbs.bathome.net/thread-31727-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# Batcher


    这也是在for 里面的啊,只是把%%i的值赋给了str  看来我只能记住这个方法了,理解不了

TOP

回复 9# lihui612ld


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

TOP

回复 9# lihui612ld


%%i 是控制变量,作用域仅限于for循环内部。
str 是普通变量,默认都是全局变量,作用域是整个bat脚本
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

TOP

回复 12# WHY


    用call传递不知道是我写的有问题还是什么情况,没有成功,显卡的是%1

TOP

回复 10# WHY


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

TOP

返回列表