Board logo

标题: [文本处理] [已解决]批处理不换行写入文本的几种方法为何有时会卡住? [打印本页]

作者: q115643492    时间: 2011-7-22 14:41     标题: [已解决]批处理不换行写入文本的几种方法为何有时会卡住?

本帖最后由 q115643492 于 2011-7-23 19:20 编辑
  1. for /f "delims=" %%i in ('findstr /i "K: L:" "c:\windows\temp\wined.txt"') do ((set/p=“%%i”<nul)>>"c:\windows\temp\nwined.txt")
复制代码
这是我一大段代码其中的一句,意思是在c:\windows\temp\wined.txt中找出包含K:和L:的行,然后输出到nwined.txt里,且在一行显示,不换行。((set/p=“%%i”<nul)>>"c:\windows\temp\nwined.txt") 这里有点疑惑,我这样写不知道对不对,但这样写整个代码是正确执行的。
最初这一句do后面的代码我没有象这样写,而是写成(set/p=“%%i”<nul>>"c:\windows\temp\nwined.txt") ,还查阅过资料,改成过(>>"c:\windows\temp\nwined.txt" set/p=“%%i”<nul)以及(set/p=“%%i”>>"c:\windows\temp\nwined.txt" <nul),这2种写法,是正确的,但是都会出现整个代码在某个地方卡住,而去掉这行,就不卡住,最后我改成了最上面那段,才可以。但我还是不明白问题出在哪,也不知道我改成那样是对的还是错的,还请有心人帮我分析下。
作者: CrLf    时间: 2011-7-22 15:02

那几种用法基本可以说是等价的(打开 echo on 看预处理回显就知道了,预处理之后,有效的句柄重定向都被挪到命令尾部,所以原先放哪都没太大区别(前提是保证重定向符没有被转义),唯一的区别应该就是当重定向符的前一个字符为数字时可能会出错。
楼主能否贴上前后几行的代码呢?
作者: q115643492    时间: 2011-7-22 15:55

本帖最后由 q115643492 于 2011-7-22 16:06 编辑

2# CrLf

恩。你说的这点我明白了,这几种都是正确的写法。包括我自己胡乱改的((set/p=“%%i”<nul)>>"%isctmp%\nwined.dat")
我把代码贴出来了,还麻烦帮我看看,但我没发现有没有句子写错了,真是纳闷。我现在的代码是可以正确执行,但出现这个奇怪问题,我还是想搞清楚,相信值得大家支持,谢谢了。
作者: powerbat    时间: 2011-7-22 18:45

本来想分析一下,但一看到这种代码风格,就没心思了。

"%ser%\rashico.exe"这个程序是啥?运行后会不会马上退出?
作者: Batcher    时间: 2011-7-22 20:15

4# powerbat


赞同
建议楼主使用缩进
作者: q115643492    时间: 2011-7-23 10:50

4# powerbat
"%ser%\rashico.exe"这个程序是AU3写的刷新托盘图标的程序,运行后马上退出。
是不是我发的代码太长了,问题是不知道哪个环节出了问题,如果只发前后几段代码肯定是没用的。
麻烦那就算了吧,反正我的问题也解决了,“不换行写入文本”代码用其中一种表示就可以使整个代码顺利运行。
我想就算要找也不一定能找出问题所在。
作者: Hello123World    时间: 2011-7-24 14:29

  1. for /f "delims=" %%i in ('findstr /i "K: L:" "c:\windows\temp\wined.txt"') do ((set/p="%%i"<nul)>>"c:\windows\temp\nwined.txt")
复制代码
虽然没意义,试试换成英文的引号测试一下。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2