关于Window的Dos Batch 文件编写的常识

Redirect "all" output to a single file:

Run:

test.bat > test.txt 2>&1

and you‘ll get this text on screen (we‘ll never get rid of this line on screen, as it is sent to the Console and cannot be redirected):

This text goes to the Console

You should also get a file named test.txt with the following content:

This text goes to Standard Output
This text goes to Standard Error

Note: The commands
                test.bat  > test.txt 2>&1
                test.bat 1> test.txt 2>&1
            test.bat 2> test.txt 1>&2
all give identical results.

Redirect errors to a separate error log file:

Run:

test.bat > testlog.txt 2> testerrors.txt

and you‘ll get this text on screen (we‘ll never get rid of this line on screen, as it is sent to the Console and cannot be redirected):

This text goes to the Console

You should also get a file named testlog.txt with the following content:

This text goes to Standard Output

and another file named testerrors.txt with the following content:

This text goes to Standard Error

Some "best practices" when using redirection in batch files:

  • Use >filename.txt 2>&1 to merge Standard Output and Standard Error and redirect them together to a single file.
    Make sure you place the redirection "commands" in this order.
  • Use >logfile.txt 2>errorlog.txt to redirect success and error messages to separate log files.
  • Use >CON to send text to the screen, no matter what, even if the batch file‘s output is redirected.
    This could be useful when prompting for input even if the batch file‘s output is being redirected to a file.
  • Use 1>&2 to send text to Standard Error.
    This can be useful for error messages.
  • It‘s ok to use spaces in redirection commands. Note however, that a space between an ECHO command and a > will be redirected too.
    DIR>filename.txt and DIR > filename.txt are identical, ECHO Hello world>filename.txt and ECHO Hello world > filename.txt are not, even though they are both valid.
    It is not ok to use spaces in >> or 2> or 2>&1 or 1>&2 (before or after is ok).
  • In Windows NT 4, early Windows 2000 versions, and OS/2 there used to be some ambiguity with ECHOed lines ending with a 1 or 2, immediately followed by a >:
    ECHO Hello world2>file.txt would result in an empty file file.txt and the text Hello world (without the trailing "2") on screen (CMD.EXE would interpret it as ECHO Hello world 2>file.txt).
    In Windows XP the result is no text on screen and file.txt containing the line Hello world2, including the trailing "2" (CMD.EXE interprets it asECHO Hello world2 >file.txt).
    To prevent this ambiguity, either use parentheses or insert an extra space yourself:
    ECHO Hello World2 >file.txt
    (ECHO Hello World2)>file.txt
  • "Merging" Standard Output and Standard Error with 2>&1 can also be used to pipe a command‘s output to another command‘s Standard Input:
    somecommand 2>&1 | someothercommand

关于Window的Dos Batch 文件编写的常识

时间: 2024-11-08 03:13:08

关于Window的Dos Batch 文件编写的常识的相关文章

BAT文件编写基础知识

BAT脚本编写基础知识 BAT文件,即批处理(Batch)文件,在DOS或Windows系统中都是可执行文件.BAT文件由一系列命令构成,其中可以包含对其他程序的调用. 批处理定义:批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令. 有关BAT的百度百科介绍: BAT(批处理文件类型) 批处理文件常用命令 echo 显示该命令后的字符 echo on 该语句后的命令都会显示命令行本身 echo off 该语句后的命令都不会显示命令

dos格式文件转为unix

dos格式文件传输到unix系统时,会在每行的结尾多一个^M,当然也有可能看不到,但是在vi的时候,会在下面显示此文件的格式,比如 "dos.txt" [dos] 120L, 2532C 字样,表示是一个[dos]格式文件,如果是MAC系统的,会显示[MAC],因为文件格式的原因有时会导致我们的unix程序,或者shell程序出现错误,那么需要把这些dos文件格式转换成unix格式,方法是 vi  dos.txt            :set fileformat=unix    :

linux库文件编写入门(笔记)

linux库文件的编写 作者: laomai地址: http://blog.csdn.net/laomai 本文主要参考了如下资料⑴hcj写的"Linux静态/动态链接库的创建和使用"地址 http://fanqiang.chinaunix.net/system/linux/2006-05-08/4126.shtml⑵雨亦奇的文章"LINUX动态链接库高级应用"地址http://www.ccw.com.cn/htm/center/prog/02_3_13_3_2.a

从简入难makefile文件编写,Linux C++编程,简单vi命令

 1.一个最基本的C++程序 2.第二个c++程序 3.第一个入门级别的简单的makefile 4.在makefile中定义变量. 5.编写makefile的依赖 如果start:标识后面的某个.o没有,则重新编译没有编译的那个文件 6.最终的makefile文件 总结:makefile是通过.o文件是否存在已经.cpp最后的修改时间来判断是否重新编译.o文件. 7.makefile不管理.h文件,它是编译器来进行管理的. vi: i在光标之前插入 a在光标后面插入 x删除后面的字符 dd删

【转】SYNOPSYS VCS Makefile文件编写与研究

原文地址:http://www.cnblogs.com/zhtxwd/archive/2012/03/30/2425180.html YNOPSYS VCS Makefile文件编写与研究 这个Makefile是synopsys提供的模板,看上去非常好用,你只要按部就班提供实际项目的参数就可以了.我们来看这个文件的头部说明: makefile 其实完全可以用csh或其他脚本来编写,只是VCS使用的linux内置的make命令定义了一个标准的仿真脚本,make命令是专门用来 做项目的源文件管理和编

OCX调用dll打成cab包时候inf文件编写

动态库:kdm_dll.dll ocx控件:UnionKdm.ocx inf文件:UnionKdm.inf 其中inf文件编写方式格式如下: [version] signature="$CHICAGO$" AdvancedINF=2.0 [DefaultInstall] CopyFiles=InstallFilesSection,InstallInfSection RegisterOCXs=RegisterOCXSection [DefaultUninstall] cleanup=1

简单php文件编写语法

简单php文件编写语法,老是弄错,做个笔记,经常温习下   1 <?php   2 echo "Test PHP reslove"   3 ?>   1 <?php   2 phpinfo();   3 ?>

window vb 上传文件

VBS上传文件(调用ftp) 首先创建一个UploadFile.bat 文件 , 内容为 :ftp -s:ftp.cfg dim rs,conn,sConn Dim strDate Dim fs,txtname,oldtxtname Dim txtpath strDate = Date ' 写文件 set fs = createobject("scripting.filesystemobject") txtpath = "D:\bak\" txtname =&quo

Scatter文件编写

(和<ARM嵌入式应用技术基础>186-190页一模一样) Scatter文件编写 一个映像文件中可以包含多个域(region),在加载和运行映像文件时,每个域可以有不同的地址.每个域可以包括多达3个输出段,每个输出段是由若干个具有相同属性的输入段组成.这样在生成映像文件时,ARM链接器就需要知道下述两个信息. 分组信息    决定各域中的输出段是由哪些输入段组织而成: 定位信息    决定各域在存储空间中的起始地址. 根据映像文件中地址映射的复杂程度,有两种方法来告诉ARM链接器这些相关的信