|
wjcing
初级用户
积分 71
发帖 59
注册 2007-12-27
状态 离线
|
『楼 主』:
关于for命令中的分隔符?
我有一文件t.txt
内容如下:
一:1 2,3 4,5 6,
二:2 3,4 5,6 7,
for /f "tokens=1* delims=:" %%a in ('findstr "一:" t.txt') do (
for %%e in (%%b) do (
echo %%e
)
运行后输出为
1
2
3
4
5
6
我想要的结果是:
1 2
3 4
5 6
for 命令没有/f参数就没法指定分隔符吗?默认的分隔符是空格和逗号吗?为什么有以上结果?
|
|
2009-5-29 15:32 |
|
|
tongzj
初级用户
积分 49
发帖 43
注册 2007-1-20
状态 离线
|
『第
2 楼』:
for 命令可以指定分隔符,你之前用的 delims=: 就是用冒号分隔了,默认是空格分隔。
改为下面语句就可以了:
for /f "tokens=1* delims=:" %%a in ('findstr "一:" t.txt') do (
for /f "tokens=1,2,3 delims=," %%e in ("%%b") do (
echo %%e
echo %%f
echo %%g
)
)
|
|
2009-5-29 22:31 |
|
|
wjcing
初级用户
积分 71
发帖 59
注册 2007-12-27
状态 离线
|
『第
3 楼』:
Quote: | Originally posted by tongzj at 2009-5-29 10:31 PM:
for 命令可以指定分隔符,你之前用的 delims=: 就是用冒号分隔了,默认是空格分隔。
改为下面语句就可以了:
for /f "tokens=1* delims=:" %%a in ( ... |
|
不好意思..我没说清楚....我的这个一和二,是不固定的...
它现在是这样..
一:1 2,3 4,5 6,
二:2 3,4 5,6 7,
以后可能是这样了...
一:1 2,3 4,5 6,11 23,d dd,ddb ddc,
二:2 3,4 5,6 7,d dxd,
他是不固定的..所以不能用这种 tokens=1,2,3迭代.
谢谢.
|
|
2009-5-30 02:09 |
|
|
wjcing
初级用户
积分 71
发帖 59
注册 2007-12-27
状态 离线
|
『第
4 楼』:
就如这句吧.
for %%e in (00000 00000,00000 00000,77777 7777,8888888 888888888888,) do ( echo %%e )
它的输出即是用了空格分隔也用了逗号分隔,我如果用
set _str=%%b
set _str=!_str: =^|!
把逗号换成"|"就正常输出了..我现在只是想知道为什么是会是这样输出,和不用把逗号替换的方法..谢谢.
|
|
2009-5-30 02:17 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
5 楼』:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%a in ('findstr "一:" t.txt') do (
set var=%%b
set var=!var:~,-1!
for %%a in ("!var:,=" "!") do echo %%~a
)
pause for %%a in () 中的分隔符有 ,;=[空格]
[ Last edited by tireless on 2009-6-4 at 03:31 ]
|
|
2009-5-30 03:23 |
|
|
wjcing
初级用户
积分 71
发帖 59
注册 2007-12-27
状态 离线
|
|
2009-5-30 04:31 |
|
|