Board logo

标题: [已结]for /F问题:如何任意选取某行内容进行操作呢? [打印本页]

作者: blancy     时间: 2009-2-18 12:08    标题: [已结]for /F问题:如何任意选取某行内容进行操作呢?
我有一个txt文件,内容是: a b j d m f g 请问用for /F 有没有什么办法对第1,3,5,7行操作,即可以任意选取某行内容进行操作呢? 多谢! ───────────────── 版务记录 ───────────────── 执行:HAT 操作:[2009-02-18]在帖子标题中增加搜索关键字 说明:原标题"for /F问题"不利于论坛搜索 处罚:扣除2点积分 提示:建议阅读以下帖子 {1415}提问的智慧 {7326}论坛新手必读,所有人的基本行为准则 {22703}请不要做浮躁的人 {27314}反面教材:本论坛“精彩”标题小集 {32667}愤怒:那些连标题都写不清楚的人们啊,你们醒醒吧 {32825}本版严厉整顿烂帖 ───────────────── 版务记录 ───────────────── [ Last edited by blancy on 2009-2-20 at 11:32 ]

作者: 5yue5     时间: 2009-2-18 12:48    标题: tokens=。。。。
@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 ]

作者: blancy     时间: 2009-2-18 14:26
Originally posted by 5yue5 at 2009-2-18 12:48: .........
单独使用tokens好像不行吧,我记得必须配合delims使用 但我这个文件每个字符都是换行后输入的

作者: yishanju     时间: 2009-2-18 15:39
@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

作者: tireless     时间: 2009-2-18 17:52
@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 ]

作者: blancy     时间: 2009-2-19 14:37
非常感谢tireless 有几个地方以前没用过,麻烦您解释一下好么? 1. setlocal enabledelayedexpansion 是做什么用的,必须要用吗? 2.usebackq是做什么用的,必须要用吗?看了DOS帮助,但是没看懂 3. if !n!==1 ...两个“!”表示什么

作者: tireless     时间: 2009-2-19 14:54    标题: Re 6楼
建议以后先搜索(论坛或Google)! 1. 什么情况下该使用变量延迟? 简析环境变量和变量延迟特殊字符以及中介法的微妙关系 2. 论坛搜索 usebackq ...

作者: blancy     时间: 2009-2-19 16:29
十分+非常感谢 DOS深奥之面容,我又窥见了一小斑啊

作者: HAT     时间: 2009-2-19 17:16    标题: Re 8楼
如果有人帮你解决了问题,建议进行以下操作: 1、修改帖子标题,在标题最前面注明:[已结] 2、给正确回答问题者加分(你自己的积分不会减少)以示感谢,虽然大家来论坛是为了学习而不是为了积分,但加分聊表谢意总是或多或少能够让花费了时间和精力无私帮助你的人略感欣慰。 3、如果你是在别人的提示下自己写出了代码,请把自己的方法贴出来跟大家分享一下,也许他人可以帮你指出代码中的不足之处、告诉你如何提高执行效率等,有交流才能更快地进步。