标题: [其他] [分享]一个for语句另类应用的简单批处理代码 [打印本页]
作者: szjwxn 时间: 2011-11-22 22:48 标题: [分享]一个for语句另类应用的简单批处理代码
- @echo off
- setlocal enabledelayedexpansion
- set var=for %%i in (A B C) do (echo %%i)
- %var%
- %var%>>1.txt
- pause
复制代码
作者: awk 时间: 2011-11-22 23:11
哪里另类?
作者: cjiabing 时间: 2011-11-22 23:31
没什么啊,早有了,命令做变量而已,和call一样。
作者: BS0小陈 时间: 2011-11-23 11:24
- 重在积累,我也来个set命令替换字符串%var:*"=set "var=%的使用:
- 要了解这个语句我们先来看关于set的赋值例子:
-
- set a=1a23b
- 变量a的值为1a23b(这个太easy了吧)
-
- set a=1"a"23"b
- 变量的值为1"a"23"b(同上)
-
- set "a=1"a"23"b
- 这个a是什么?是1还是1"a"23 经过测试a=1"a"23 就是说有引号时他是找最后一个引号的多余的就没了如b
-
- 那set "a=1aa23aa
- 这个怎么样,会不会出错呢?经过我的测试没问题无视一个引号 a=1aa23aa
-
- 再看 :set a=1"2"3"&echo %a:*"=%
- 结果是2"3"就把第一个引号和前面的都去了
-
- 那这个呢:set "a=1a"&echo %a:*"=%
- 结果是1a 变量的转换就多余了即使这里的*“是没用的
-
- 怎么在复习set,好开始正题:
-
- @echo off
- set var=a"bs"c
- %var:*"=set "var=%
- echo %var%
- pause
-
- 上面的结果为bs。我们把变量带进来看:a"bs"c:*"=set "var=
-
- 这里的*"指的是a"所以就变成了set "var=bs"c
-
- 这样就回到了普通的set定义变量了c就是多余的了。
-
- 如果上面你想要输出的是:bs"c 那么我们就改成:%var:*"=set var=%
-
- 原理知道了怎么改都行!
复制代码
作者: jellyhk 时间: 2011-11-23 12:32
这些有什么用?什么时候用呢?没觉得有用!
楼上!
作者: lxzzr 时间: 2011-11-23 15:42
也许楼主应该看看这个http://www.bathome.net/thread-5861-1-1.html
作者: Hello123World 时间: 2011-11-24 15:19
变量延迟没必要开。- @echo off
- set var=for %%i in (A B C) do (echo %%i)
- echo %var%
- pause
复制代码
。
原理就是把“for %%i in (A B C) do (echo %%i)”整句当成变量var的值。
作者: Hello123World 时间: 2011-11-24 15:20
与其说是for命令的,还不如说是set命令的……
作者: szjwxn 时间: 2011-11-25 18:29
在下菜鸟让各位见笑了,对我来说已经是另类了,说明我知识太匮乏了。失礼了
作者: lxzzr 时间: 2011-11-25 23:12
回复 9# szjwxn
加油!!!都是从菜鸟过来的^_^
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |