windows 的控制台下如何实现像 linux 的 " ¦ " 那样的,
把一个程序的输出作为另一个程序的输入?
谢谢:)
---------------------------------------------------------------
一样的,windows下也支持“ ¦”符号
比如要在D盘所有文件里查找包含“xxxx”的行输出到一个abc.txt
type D:\. ¦ find "xxxx" > abc.txt
>和>>的不同:
> 输出到
>>在原有文件里追加
---------------------------------------------------------------
楼上的对,使用“ ¦”,精确点说,这是管道命令。
DOS的管道功能是使一个程序或命令的标准输出用做另一个程序或命令的标准输入。如把DEBUG的输入命令写入文件AAA, 用TYPE命令通过管道功能将AAA的内容传输给DEBUG, 在DEBUG执行期间不再从控制台索取命令参数, 从而提高了机器效率。命令为: C:>TYPE AAA ¦DEBUG >BBB。
---------------------------------------------------------------
批处理文件使用技巧:
DOS的批处理文件十分有用,我们可以把经常使用的命令编写为批处理文件,由计算机来实现对系统的自动加载, 完成这些重复工作。今介绍几个批处理文件的使用技巧:
(一)应用DOS重定向功能
DOS的标准输入输出通常是在标准设备键盘和显示器上进行的, 利用重定向,可以方便地将输入输出改向磁盘文件或其它设备。如在批处理命令执行期间为了禁止命令或程序执行后输出信息而扰乱屏幕, 可用DOS重定向功能把输出改向NUL设备(NUL不指向任何实际设备): C:>COPY A.TXT B.TXT > NUL。
命令执行结束不显示"1 file(s) copied"的信息。有的交互程序在执行时要求很多键盘输入, 但有时输入是固定不变的, 为加快运行速度, 可预先建立一个输入文件,此文件的内容为程序的键盘输入项, 每个输入项占一行。假如有一个程序ZB, 其输入项全部包括在文件IN.DAT中, 执行 C:>ZB
1<in.dat>NUL 程序就自动执行。
2
3(二)应用DOS管道功能
4
5DOS的管道功能是使一个程序或命令的标准输出用做另一个程序或命令的标准输入。如把DEBUG的输入命令写入文件AAA, 用TYPE命令通过管道功能将AAA的内容传输给DEBUG, 在DEBUG执行期间不再从控制台索取命令参数, 从而提高了机器效率。命令为: C:\>TYPE AAA &brvbarDEBUG >BBB。
6
7(三)子程序
8
9在一个批处理文件可用CALL命令调用另一个子批处理文件, 当子批文件执行结束后,自动返回父批文件, 继续向下执行。如: A.BAT B.BAT,A调用B,A.BAT内容如下:
10
11@ECHO OFF
12CALL B
13CD \BASIC
14BASICA BG
15@ECHO ON
16
17(四)菜单选择功能
18
19DOS功能调用31H或4CH所提供的一字节的返回码, 通过批处理子命令IF和ERRORLEVEL对返回码进行处理, 可达到自动执行一批命令的目的。在批处理文件中实现高级语言所有的菜单提示功能, 使批处理文件变得更灵活方便。先用DEBUG建立一个菜单驱动程序MENU.COM,对应地编写一个批处理文件LG.BAT。具体内容和方法见下表:
20
21DEBUG
22-A
23-166C:0100 MOV DX,111
24-166C:0103 MOV AH,09
25-166C:0105 INT 21
26-166C:0107 MOV AH,01
27-166C:0109 INT 21
28-166C:010B MOV AH,4C
29-166C:010D INT 21
30-166C:010F INT 20
31-166C:0111 DB '******************************'0D 0A
32-166C:0131 DB '* 1.Turbo Pascal 5.00 *'0D 0A
33-166C:0151 DB '* 2.Turbo Basci 1.00 *'0D 0A
34-166C:0171 DB '* 3.Turbo Prolog 2.00 *'0D 0A
35-166C:0191 DB '* 4.Turbo C 2.00 *'0D 0A
36-166C:01B1 DB '* 0.Exit *'0D 0A
37-166C:01B1 DB '******************************'0D 0A
38-166C:01F1 DB 'Your choice(0..4) : '24 0D 0A 1A
39-166C:0209
40-R CX
41CX 0000
42:108
43-N MENU.COM
44-W
45Writing 0108 bytes
46-Q
47@ECHO OFF:
48START
49CLS
50MENU
51IF ERRORLEVEL 52 GOTO C
52IF ERRORLEVEL 51 GOTO PRO
53IF ERRORLEVEL 50 GOTO BAS
54IF ERRORLEVEL 49 GOTO PAS
55IF ERRORLEVEL 48 GOTO EX
56CLS
57GOTO START
58:PAS
59CD \TP5.00
60TURBO
61CD \
62GOTO START
63:BAS
64CD \TB
65TB
66CD \
67GOTO START
68:PRO
69CD \TPROLOG
70PROLOG
71CD \
72GOTO START
73:C
74CD \TURBOC
75TC
76CD \
77GOTO START
78:EX
79@ECHO ON
80
81
82执行LG, 屏幕左上角出现一个菜单, 并提示用户输入选择, 当选择的功能执行结束,重新返回主菜单请求选择, 直到选择"0"号功能, 程序结束返回DOS。
83
84(五)应用命令处理程序完成大量重复工作
85
86DOS提供调用次级命令程序的方法, 可实现与子程序等效的功能, 在MS DOS3.3以前的DOS版本下非常有用。如你有一批FORTRAN源程序需要编译, 首先编写两个批文件MAKEOBJ.BAT、C.BAT, 然后执行MAKEOBJ, 即可把当前目录下的所有扩展名为.FOR的FORTRAN源程序编译成OBJ文件。这种方法迅速正确, 人机交互少, 减轻了程序员的
87
88MAKEOBJ.BAT C.BAT
89@ECHO OFF
90ECHO COMPILE FORTRAN PROGRAMS.
91FOR %%A IN (*.FOR) DO COMMAND /C C %%A
92ECHO FINISH !
93@ECHO ON @ECHO OFF
94ECHO ------ COMPILE %1 ------
95FOR1 %1; >NUL
96FOR2 >NUL
97@ECHO ON
98
99正确熟练地应用批处理文件, 可以给你的工作带来事半功倍的效果。利用本文介绍的方法你可以方便地编写出一个应用系统的主控模块, 与高级编写的模块一样好用, 且更为简便。以上的程序均在PC/AT上通过, 操作系统为PC DOS3.30。</in.dat>