|
lywlhs
初级用户
积分 25
发帖 10
注册 2008-10-3
状态 离线
|
『楼 主』:
[求助]请教一下for /f " delims== tokens=2"
问题一:
比如我现在有一个123.TXT的文件,每一行都有3个内容,
例如:
星期一=上课=游泳
星期二=劳动=植树
星期三=休息=看电视
……=……=……
for /f " delims== tokens=2" %%a in ('more ^<C:\123.txt^|find /i "星期一"') do set 1work=%%a
for /f " delims== tokens=3" %%b in ('more ^<C:\123.txt^|find /i "星期一"') do set 2work=%%b
我现在要用2条命令才能得到2个变量,能不能把2个命令写成一个,并且得到这2个变量?
问题二:
星期一=上课
星期二=劳动
星期三=休息
……=……
tokens=1* 意思是第1个字符串后面的所有内容,tokens=2 是第2个字符串。
for /f " delims== tokens=1*" %%a in ('more ^<C:\123.txt^|find /i "星期一"') do set 1work=%%b
这里tokens=1* 后面do set 1work=%%b 为什么do set 1work=%%a就显示的“星期一”?
问题三:
把上面123.txt里的内容中的“=”号去掉 下面的命令里delims=应该怎么写?还是有别的写法?
星期一 上课 游泳
星期二 劳动 植树
星期三 休息 看电视
…… …… ……
我还是个新手,可能问的问题很简单,但我是真的不会,还请高手帮忙指点一下。谢谢了。
|
|
2008-10-3 18:21 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
2 楼』:
1.
tokens
2.
不知道你说啥
仔细看/?
3.
set /?
2下空格后那段帮助仔细看
|
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore |
|
2008-10-3 18:31 |
|
|
lywlhs
初级用户
积分 25
发帖 10
注册 2008-10-3
状态 离线
|
『第
3 楼』:
Quote: | Originally posted by slore at 2008-10-3 18:31:
1.
tokens
2.
不知道你说啥
仔细看/?
3.
set /?
2下空格后那段帮助仔细看 |
|
1。
我上面用的就是tokens,我不会用一条命令得出2个变量。现在只能用2条命令,我想能不能用1条命令就可以?怎么写?
2.
for /f " delims== tokens=1*" %%a in ('more ^<C:\123.txt^|find /i "星期一"') do set 1work=%%b
for /f " delims== tokens=2" %%a in ('more ^<C:\123.txt^|find /i "星期一"') do set 1work=%%b
就不正确了。必须是
for /f " delims== tokens=2" %%a in ('more ^<C:\123.txt^|find /i "星期一"') do set 1work=%%a
才可以。就是不明白为什么,所以请教一下。
3。
你的回答我看不懂。
|
|
2008-10-3 18:44 |
|
|
zb1007zb
初级用户
积分 88
发帖 39
注册 2008-8-16
状态 离线
|
『第
4 楼』:
for /f "tokens=2,3 delims== "%%a ……
试试
其实你如果 for /f "tokens=2,3 delims== "%%a 了 2和3的段都会被赋值到 %%a %%b %%c 里面去
[ Last edited by zb1007zb on 2008-10-3 at 18:52 ]
|
/? 永远是你最好的老师 |
|
2008-10-3 18:50 |
|
|
lywlhs
初级用户
积分 25
发帖 10
注册 2008-10-3
状态 离线
|
『第
5 楼』:
Quote: | Originally posted by zb1007zb at 2008-10-3 18:50:
for /f "tokens=2,3 delims== "%%a ……
试试
其实你如果 for /f "tokens=2,3 delims== "%%a 了 2和3的段都会被赋值到 %%a %%b %%c 里面去
[ Last edi ... |
|
然后
set 1work=%%a
set 2work=%%b
…………
是这样吧?
我这样好像是多此一举。。。。。
第2个问题和第三个问题,还等待弄明白。看到的高手给解释一下。
谢谢了。
谢谢楼上的。
[ Last edited by lywlhs on 2008-10-3 at 19:36 ]
|
|
2008-10-3 19:33 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
6 楼』:
tokens
我把s高亮了……说明不是后面只能写一个。
你没有好好看帮助麽?
给的例子是
某些范例可能有助:
For /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将
每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或
空格定界符号。请注意,这个 for 程序体的语句引用 %i 来
取得第二个符号,引用 %j 来取得第三个符号,引用 %k
来取得第三个符号后的所有剩余符号。对于带有空格的文件
名,您需要用双引号将文件名括起来。为了用这种方式来使
用双引号,您还需要使用 usebackq 选项,否则,双引号会
被理解成是用作定义某个要分析的字符串的。
3.
set /?
环境变量替换已如下增强:
%PATH:str1=str2%
会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。
要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。
"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的
开始到 str1 剩余部分第一次出现的地方,都一直保持相配。
|
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore |
|
2008-10-3 20:08 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
7 楼』:
问题一
for /f "delims== tokens=2,3" %%a in ('findstr "星期一" C:\123.txt') do echo %%a %%b 问题二
就是那样用的。
问题三
delims 默认的分隔符是 空格 和 Tab
此帖被 +1 点积分 点击查看详情 评分人:【 dosz 】 | 分数: +1 | 时间:2009-3-4 09:34 |
|
|
|
2008-10-3 21:03 |
|
|
Evangel
初级用户
积分 145
发帖 95
注册 2008-4-12
状态 离线
|
『第
8 楼』:
又偷学一招:%str:str1=str2%。。。
|
|
2008-10-3 21:17 |
|
|
lserfn
初级用户
积分 97
发帖 49
注册 2008-9-24
状态 离线
|
『第
9 楼』:
问题一:
比如我现在有一个123.TXT的文件,每一行都有3个内容,
例如:
星期一=上课=游泳
星期二=劳动=植树
星期三=休息=看电视
……=……=……
for /f " delims== tokens=2" %%a in ('more ^<C:\123.txt^|find /i "星期一"') do set 1work=%%a
for /f " delims== tokens=3" %%b in ('more ^<C:\123.txt^|find /i "星期一"') do set 2work=%%b
我现在要用2条命令才能得到2个变量,能不能把2个命令写成一个,并且得到这2个变量?
for /f "tokens=2,3 delims==" %%a in ('more ^<C:\123.txt^|find /i "星期一") do set 1work=%%a
问题二:
星期一=上课
星期二=劳动
星期三=休息
……=……
tokens=1* 意思是第1个字符串后面的所有内容,tokens=2 是第2个字符串。
for /f " delims== tokens=1*" %%a in ('more ^<C:\123.txt^|find /i "星期一"') do set 1work=%%b
这里tokens=1* 后面do set 1work=%%b 为什么do set 1work=%%a就显示的“星期一”?
tokens=1* 1和1后面的所有内容 也就是说%%a 是在第一列 那么后面的内容当然就是照着顺序走了 %%b就是上课
问题三:
把上面123.txt里的内容中的“=”号去掉 下面的命令里delims=应该怎么写?还是有别的写法?
星期一 上课 游泳
星期二 劳动 植树
星期三 休息 看电视
delims= 直接留个空格
|
|
2008-10-3 21:52 |
|