楼 主
[已结]for /F问题:如何任意选取某行内容进行操作呢?
发表于 2009-02-18 12:08 · 中国 广东 深圳 联通
初级用户
★
积分 33
发帖 23
注册 2009-02-17 17:01
17年会员
UID 139095
性别 女
状态 离线
我有一个txt文件,内容是:
a
b
j
d
m
f
g
请问用for /F 有没有什么办法对第1,3,5,7行操作,即可以任意选取某行内容进行操作呢?
多谢!
───────────────── 版务记录 ─────────────────
执行:HAT
操作:在帖子标题中增加搜索关键字
说明:原标题"for /F问题"不利于论坛搜索
处罚:扣除2点积分
提示:建议阅读以下帖子
{1415}提问的智慧
{7326}论坛新手必读,所有人的基本行为准则
{22703}请不要做浮躁的人
{27314}反面教材:本论坛“精彩”标题小集
{32667}愤怒:那些连标题都写不清楚的人们啊,你们醒醒吧
{32825}本版严厉整顿烂帖
───────────────── 版务记录 ─────────────────
[
Last edited by blancy on 2009-2-20 at 11:32 ]
本帖最近评分记录
(共 1 条)
点击查看详情
| 评分人 | 分数 | 时间 |
| HAT |
-2 |
2009-02-18 13:36 |
新手上路,请多关照
第 2 楼
tokens=。。。。
发表于 2009-02-18 12:48 · 中国 贵州 遵义 电信
初级用户
★
积分 69
发帖 34
注册 2009-02-08 23:47
17年会员
UID 138359
性别 男
状态 离线
@echo off
findstr /n . d:\ ff.txt ^
> d:\my.txt
for /f "tokens=* " %%1 in ^
('findstr /c:1 /c:3 /c:5 .* d:\my.txt') ^
do echo %%1
ff.txt 内容
-------------------------------
a
b
j
d
m
f
g
--------------------
方法2:
@echo off
for /f "tokens=* " %%1 in ('findstr /n .* d:\ff.txt') ^
do echo %%1 |findstr /c:1 /c:3 /c:5
[ Last edited by 5yue5 on 2009-2-20 at 13:12 ]
第 3 楼
发表于 2009-02-18 14:26 · 中国 广东 深圳 联通
初级用户
★
积分 33
发帖 23
注册 2009-02-17 17:01
17年会员
UID 139095
性别 女
状态 离线
Originally posted by 5yue5 at 2009-2-18 12:48:
.........
单独使用tokens好像不行吧,我记得必须配合delims使用
但我这个文件每个字符都是换行后输入的
新手上路,请多关照
第 4 楼
发表于 2009-02-18 15:39 · 中国 北京 海淀区 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f %%i in (1.txt) do (
set /a a+=1
echo !a!|findstr /c:"1" /c:"3" /c:"5" /c:"7"&&echo %%i
)
pause
有问题请发论坛或者自行搜索,再短消息问我的统统是SB
第 5 楼
发表于 2009-02-18 17:52 · 中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
@echo off
set file=a.txt
setlocal enabledelayedexpansion
(
for /f "usebackq delims=" %%a in ("%file%") do (
set /a n+=1
if !n!==1 (
echo 第一行
) else if !n!==3 (
echo 第三行
) else if !n!==5 (
echo 第五行
) else if !n!==7 (
echo 第七行
) else echo %%a
)
) > _tmp
move _tmp "%file%"
[
Last edited by tireless on 2009-2-18 at 17:54 ]
本帖最近评分记录
(共 1 条)
点击查看详情
| 评分人 | 分数 | 时间 |
| blancy |
+1 |
2009-02-23 16:03 |
第 6 楼
发表于 2009-02-19 14:37 · 中国 广东 深圳 电信
初级用户
★
积分 33
发帖 23
注册 2009-02-17 17:01
17年会员
UID 139095
性别 女
状态 离线
非常感谢tireless
有几个地方以前没用过,麻烦您解释一下好么?
1. setlocal enabledelayedexpansion
是做什么用的,必须要用吗?
2.usebackq是做什么用的,必须要用吗?看了DOS帮助,但是没看懂
3. if !n!==1 ...两个“!”表示什么
新手上路,请多关照
第 7 楼
Re 6楼
发表于 2009-02-19 14:54 · 中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
第 8 楼
发表于 2009-02-19 16:29 · 中国 广东 深圳 联通
初级用户
★
积分 33
发帖 23
注册 2009-02-17 17:01
17年会员
UID 139095
性别 女
状态 离线
十分+非常感谢
DOS深奥之面容,我又窥见了一小斑啊
新手上路,请多关照
第 9 楼
Re 8楼
发表于 2009-02-19 17:16 · 美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
如果有人帮你解决了问题,建议进行以下操作:
1、修改帖子标题,在标题最前面注明:[已结]
2、给正确回答问题者加分(你自己的积分不会减少)以示感谢,虽然大家来论坛是为了学习而不是为了积分,但加分聊表谢意总是或多或少能够让花费了时间和精力无私帮助你的人略感欣慰。
3、如果你是在别人的提示下自己写出了代码,请把自己的方法贴出来跟大家分享一下,也许他人可以帮你指出代码中的不足之处、告诉你如何提高执行效率等,有交流才能更快地进步。
论坛跳转: