[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理findstr命令怎样不用临时文件输出至原文件?

本帖最后由 ge_xin_yu 于 2011-5-15 03:33 编辑

如下代码:

1、findstr 12 1.txt >temp.txt
2、findstr 12 1.txt >1.txt

代码1可以实现正常功能,但代码2输出后发现1.txt为空,为什么输出至同一文件为空呢?如果需要输出至同一文件,该如何写?当然可以先输出至temp.txt,然后在copy至1.txt,但始终感觉太繁琐,能不能一条命令就可以实现此功能?高手帮忙看看!!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

预处理时发现有重定向符号>,先创建输出文件句柄,而且是覆盖方式(如果用>>则是追加方式)。创建句柄后再执行命令,文件内容已经清零了。
比如当前目录下本来没有no.txt文件,执行dir>no.txt,打开no.txt会看到里面记录了no.txt,就是因为no.txt在执行命令前已经创建了。
1

评分人数

TOP

2# powerbat
感谢答复,有没有方法可以避免预处理第二条语句,就像延迟变量一样?我有个删除重复IP的批处理需要这样做,先输入至临时文件再拷入原文件始终感觉太繁琐,如果一条语句解决,看上去就很简单明了,也容易读。。。

TOP

  1. @echo off
  2. for /f "delims=" %%a in ('findstr 12 1.txt') do (
  3. if not defined flag (set flag=1&echo %%a>1.txt) else echo %%a>>1.txt
  4. )
复制代码

TOP

  1. findstr 12 1.txt>$&&move $ 1.txt
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

5# hanyeguxing

请问版主,代码中这个>$中的$是指的什么文件,搜了一遍居然没发现!!

TOP

你也可以把$改成temp.txt,明白什么意思没?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 ge_xin_yu 于 2011-5-14 21:12 编辑

7# hanyeguxing
明白,我就是这样写的,但中间产生了临时文件,实际上用了两个命令,能不能用一个命令实现这一点同样的功能??

TOP

8# ge_xin_yu


sed和change可以
http://bbs.bathome.net/thread-3981-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表