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

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

本帖最后由 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种写法,是正确的,但是都会出现整个代码在某个地方卡住,而去掉这行,就不卡住,最后我改成了最上面那段,才可以。但我还是不明白问题出在哪,也不知道我改成那样是对的还是错的,还请有心人帮我分析下。
1

评分人数

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

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

TOP

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

2# CrLf

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

TOP

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

"%ser%\rashico.exe"这个程序是啥?运行后会不会马上退出?
1

评分人数

    • CrLf: 乐于助人PB + 2

TOP

4# powerbat


赞同
建议楼主使用缩进
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

TOP

  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")
复制代码
虽然没意义,试试换成英文的引号测试一下。
1

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

返回列表