标题: [文本处理] 批处理变量该如何传递,有没有这方面的教程啊? [打印本页]
作者: lihui612ld 时间: 2019-8-5 11:29 标题: 批处理变量该如何传递,有没有这方面的教程啊?
- @echo off
- for /f "skip=1 tokens=2,4-7" %%a in ('echo list disk^|diskpart^|find "磁盘"') do (
- if "%%b%%c" == "%%d%%e" echo %%a&echo %%b
- )
复制代码
我下面的语句需要用到%%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 - @echo off
- setlocal enabledelayedexpansion
- for /f "skip=1 tokens=2,4-7" %%a in ('echo list disk^|diskpart^|find "磁盘"') do (
- if "%%b%%c" == "%%d%%e" (
- set StrA=%%a
- set StrB=%%b
- echo !StrA!
- echo !StrB!
- )
- )
- echo for命令执行完毕之后:
- echo !StrA!
- echo !StrB!
- 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 “传递”变量:- @echo off
- for /f "skip=1 tokens=2,4-7" %%a in ('echo list disk^|diskpart^|find "磁盘"') do (
- if "%%b%%c" == "%%d%%e" call :Label %%a %%b
- )
- pause & exit
-
- :Label
- echo %1
- echo %2
复制代码
作者: lihui612ld 时间: 2019-8-6 12:49
回复 12# WHY
用call传递不知道是我写的有问题还是什么情况,没有成功,显卡的是%1
作者: lihui612ld 时间: 2019-8-6 12:49
回复 10# WHY
这样就好理解了,懂了,谢谢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |