Board logo

标题: 在批处理中,如何删除一个文件中第二行以后的所有引号? [打印本页]

作者: nowala     时间: 2006-10-3 14:49    标题: 在批处理中,如何删除一个文件中第二行以后的所有引号?

我有个my.txt,
内容是:
“我的名字”
“我的年龄”
“my name is hb”
"my age is 100"
。。。
请问个位大侠,我想删除my.txt 中的从第二行以后出现的所有引号,应该写个什么样的批处理???
谢啦;)

[ Last edited by nowala on 2006-10-3 at 15:09 ]
作者: pengfei     时间: 2006-10-3 19:52
代码如下:
@echo off
set num=0
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (my.txt) do (
    set content=%%i
    set /a num+=1
    if !num! gtr 2 set content=!content:"=!
    echo !content!>>my_.txt
)
pause
[ Last edited by pengfei on 2006-10-3 at 21:19 ]
作者: namejm     时间: 2006-10-3 21:14
  楼上的这一句出错了:if not "!num!"=="2" set content=!content:"=!,因为楼主是 想删除my.txt 中的从第二行以后出现的所有引号,而pengfei的代码是除了第二行的,其余行的引号全被去掉了。不过楼主的描述也有问题,不知道楼主是要删除从第二行开始所有行的引号,还是删除第二行之后的所有行的引号,姑且认为是第一种情况,那么,楼上的 if 条件得改一下,改成 if !num! geq 2 set content=!content:"=! 就可以了。

[ Last edited by namejm on 2006-10-3 at 21:25 ]
作者: pengfei     时间: 2006-10-3 21:20
呵呵~ 是我看错了, 代码已修改, 多谢namejm兄提醒.
作者: 不得不爱     时间: 2006-10-3 21:38
2楼的不去“和”两种引号,下面的可以删除“和”与"三种引号!
off
set num=0
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (my.txt) do (
set content=%%i
set /a num+=1
if !num! gtr 2 set content=!content:"=!
if !num! gtr 2 set content=!content:“=!
if !num! gtr 2 set content=!content:”=!
echo !content!>>my_.txt
)
pause

作者: namejm     时间: 2006-10-3 21:42
  呵呵,顶楼的引号既有全角状态下的,也有半角状态下的,不是很统一,顶楼的例子是原文就是这样的,还是纯手工输入的时候输入法切换出错打出来的?
作者: 不得不爱     时间: 2006-10-3 21:49
也许是故意的吧!
作者: pengfei     时间: 2006-10-3 22:01
可能是楼主在中英文切换时, 没注意到这一点.
作者: nowala     时间: 2006-10-4 01:26
谢谢各位大家了,我的引号在输入时不小心弄成这样的,呵呵!!~
我是想从第三行开始删除引号的!!~谢谢啦!!!~
作者: nowala     时间: 2006-10-4 01:29
太感谢大家了,真爱死你们了!~哈哈