Board logo

标题: 批处理文件中无法输入重定向符号">" [打印本页]

作者: ql2000     时间: 2004-4-12 00:00    标题: 批处理文件中无法输入重定向符号">"

我想建立一个批处理文件a.bat,想通过它建立另外一个批处理文件b.bat,并向b.bat里输入重定向符号“>” 如其中一句:



echo echo abcd  > c.txt >b.bat



我的目的是将 echo abcd  > c.txt  输入到批处理文件b.bat中,因为使用了两个重定向符号,所以造成了混乱,文件默认执行了第一个 >,以致 >符号无法输入进文件b.bat中,请问各位高手如何解决,谢谢!






作者: Climbing     时间: 2004-4-12 00:00
恐怕必须要借助第三方软件才能实现。试试Horst的Qecho命令。
作者: cdl     时间: 2004-4-12 00:00
用重定向先生成一个a.bat然后取消重定向,再用copy成b.bat
作者: Climbing     时间: 2004-4-12 00:00


  Quote:
以下是引用ql2000在2004-4-12 12:19:17的发言:
我想建立一个批处理文件a.bat,想通过它建立另外一个批处理文件b.bat,并向b.bat里输入重定向符号“>” 如其中一句:



echo echo abcd  > c.txt >b.bat



我的目的是将 echo abcd  > c.txt  输入到批处理文件b.bat中,因为使用了两个重定向符号,所以造成了混乱,文件默认执行了第一个 >,以致 >符号无法输入进文件b.bat中,请问各位高手如何解决,谢谢!


 
 
 

又查了一下,用Horst的lmod就可以实现你所说的功能,如下:
echo echo abcd  | lmod [] ["> c.txt"] >b.bat
作者: ql2000     时间: 2004-4-12 00:00
谢谢climbing,想不到要借助第三方软件,这样做通用性不是太好,但解决了我的长久以来的问题,真是太谢谢你了。

至于3楼cdl朋友的方法,我看不懂,你能根据我所说的编给我看看吗?先谢了。
作者: Climbing     时间: 2004-4-12 00:00
不借助第三方软件估计很难实现,因为“>”是系统保留字符,dos命令无论如何也无法处理它的。至于cdl的方法,估计他自己都还没有搞明白是怎么回事呢。
作者: ql2000     时间: 2004-4-12 00:00
呵,但愿cdl能明白。既然climbing这样说了,我也只好放弃了。哎........
作者: willsort     时间: 2004-4-13 00:00
Re ql2000:

    Climbing兄大概没有仔细看过Roy关于接受键盘输入的那封帖子,那上面就是输出重定向符号以及其他系统符号的巧妙方案。不借助第三方工具,而是使用内部命令PROMPT。具体使用方法如下:

    %comspec% /c prompt echo abcd $g c.txt >b.bat
作者: ql2000     时间: 2004-4-13 00:00
好,谢谢willsort,试试去!!!!
作者: Climbing     时间: 2004-4-13 00:00
果然高明,受教了。
作者: ql2000     时间: 2004-4-18 00:00
终于找到更好的答案了,非常的简单,只需在前一个>前加符号^即可!即:
echo echo abcd  ^> c.txt >b.bat

呵呵,希望大家也了解了解。^_^





作者: Climbing     时间: 2004-4-18 00:00
很不错!
作者: willsort     时间: 2004-4-21 00:00
Re ql2000:

    经测试,此方法只在Windows2000及其同系列系统平台下的DOS控制台有效,而在Windows98及其同系列的系统平台下的DOS控制台和纯DOS下无效。以下内容引自Windows说明文档。

  Quote:
Echo
说明
对 echo 命令使用消息

当回显关闭时可以使用 echo message 命令。要显示几行长的消息而不显示其他命令,可以在批处理程序的 echo off 命令后包含几个 echo message 命令。

隐藏命令提示符

如果在命令行上使用 echo off 命令,则命令提示符将不会出现在屏幕上。要重新显示命令提示符,请键入 echo on。

防止 Windows 2000 回显一行

可以在批处理程序中的命令前面插入 at 符号 (@),以防 Windows 2000 回显该行。

回显一个空行

要回显屏幕上的空行,可以键入 echo 然后加一个句号 (echo.)。不要插入空格。

显示管道和重定向字符

当使用 echo 命令时,要显示管道 (|) 或重定向字符(),请在管道 (|) 或重定向字符(例如,^>、^< 或 ^|)的前面使用脱字符。要使用一个脱字符本身 (^),请在一行中使用两个 (^^)。

[此贴子已经被作者于2004-4-21 8:19:55编辑过]



作者: Climbing     时间: 2004-4-21 00:00
无论采用什么方法,解决了问题就好。技巧实在太多了,穷其一生恐怕也学不完。

对吧?willsort。
作者: willsort     时间: 2004-4-25 00:00
Re Climbing:

  某个人学习某样知识总是有特定的目的。正如我学习批处理,就是为了陶陶然自得其乐的同时解决一些实际问题。所以,我对批处理编程技巧的追求某些时候是执著的有些偏执了。

  对于以上问题,我承认我是过于追根究底了些,但我想,这世界上,每个领域内,都需要执著乃至偏执的人,正如这世界上也需要你这样的进退自如的人一样。

  我想这并不妨碍我们成为朋友的可能吧。
作者: hzy     时间: 2004-11-8 00:00


  Quote:
以下是引用willsort在2004-4-21 8:19:18的发言:
Re ql2000:

    经测试,此方法只在Windows2000及其同系列系统平台下的DOS控制台有效,而在Windows98及其同系列的系统平台下的DOS控制台和纯DOS下无效。以下内容引自Windows说明文档。

echo &lt;string&gt; &gt;&gt;aaa.txt 这样不行!
要想在纯dos下用批处理把“&lt;string&gt;”输入到aaa.txt中,到底批处理语句该怎么写?
作者: qzwqzw     时间: 2004-11-11 00:00
willsort的方法好像在98和2000下都有些问题。98下可以用 echo exit | %comspec% /k prompt $Lstring$G | find "&lt;" &gt;&gt;aaa.txt 2000下可以用 echo exit | %comspec% /q /k prompt $Lstring$G | find "&lt;" &gt;&gt;aaa.txt
作者: hzy     时间: 2004-11-12 00:00
那么纯dos下呢?

[此贴子已经被作者于2004-11-12 19:36:34编辑过]



作者: willsort     时间: 2004-11-14 00:00
Re hzy:

      这是我在未学习命令行环境兼容性之前所做的代码,所以有局限性。

      原文  %comspec% /c prompt echo this is a text $g test.txt>test.bat   是在msdos6.22下编写并测试通过的;

      不过下面的代码应该在各类环境下都有效:
echo exit | %comspec% /k prompt echo this is a text $g test.txt$_ | find ">" >test.bat
[ Last edited by willsort on 2005-8-18 at 18:43 ]
作者: autoit     时间: 2004-11-14 00:00


  Quote:
echo exit | %comspec% /k prompt echo this is a text $g test.txt$_ | find "&gt;" &gt;test.bat

&amp;_:Carriage return and linefeed?绝的用法.
作者: qzwqzw     时间: 2004-11-15 00:00
高!
作者: defrag     时间: 2005-5-22 00:00
我的工具可以,在doshome.com下在
作者: smileseeker     时间: 2005-5-29 00:00
echo ^&lt;string^&gt;&gt;aaa.txt             &lt;string&gt;      2000下请问各位  echo exit | %comspec% /k prompt echo this is a text $g test.txt$_ | find "&gt;" &gt;test.bat  到底是什么意思
作者: jgty727     时间: 2005-8-15 00:57
就是如楼上说的,能解释一下吗?
作者: jgty728     时间: 2005-8-16 02:12
请问斑竹%comspec% /c prompt echo abcd $g c.txt >b.bat









这段里面的%comspec% 指的是什么意思?  还有$g 是什么意思?先谢过。。。
作者: zjh7547     时间: 2006-9-6 22:20
echo echo aaa ^>b12.txt >c.txt
将建立c.txt ,里面内容是 echo aaa >b12.txt
作者: flying008     时间: 2006-9-7 01:43
WILLSORT版主说得不错……大家为了解决一个问题而寻求更简更直之路,因为执著而更上一层楼,才能达到“吾当临绝顶,一览众山小”之境!
作者: hngaoshou     时间: 2007-5-3 01:19
简单实现
echo ^> >1.bat
用个转意符号

[ Last edited by hngaoshou on 2007-5-3 at 01:21 AM ]
作者: guanglight2001     时间: 2008-5-7 01:19
太好了,能联系进度条的使用,佩服
作者: guanglight2001     时间: 2008-5-7 01:21
看过了,牛人!!!!!!!
作者: dawei8646     时间: 2008-5-7 03:04
看了你们高手的高招,真是受益不少啊
作者: joyn     时间: 2008-5-7 03:46
^ 符号的作用就是取消转义符的转义功能  可以在echo 中打印出来 要打印转义符号
就必须在符号前加一个^