Windows 批处理脚本指南: 标准输入输出

Windows 批处理脚本指南: 标准输入输出,第1张

与Unix/Linux 一样,DOS使用三个通用的“文件流”来进行输入,输出文陆庆本信息或者错误信息。程序或者脚本使用标准输入文件(stdin)读取内容,标准输出(stdout)输出文件或者打印文本到屏幕上,标准错误(stderr)输出错误信息到屏幕上。

这三个标准文件(也称为标准流)使用数字 0,1,2 进行标记。标准输入是文件0,标准输出是文件1,标准错误是文件2。下文中的文件流重定向会用到这三个数字。

批处理脚本经常需要把一些程序的日志输出的一个文本文件。 > *** 作符可以将标准输出或者错误重定向到一个文件。比如,列稿咐出当前目录下的文件信息,并存储到一个文本文件,可以这么 *** 作:

> *** 作符会覆盖目标文件的内容, >> *** 作符则是将内容追加至文件末。

默认情况下, >、 >> 是将标准输出重定向。 也可以在 *** 作符前加上 2 (注意没有空格) 来重定向标准错误。

也可以通过 >&运算符,将标准输出、错误相互转换。 例如,将标准输出转为异常来输出到 error.txt

通过几个例子看下, 将下边的内容保存为 test.cmd

使用 < 运算符可以将文件内容读入程序或者脚本。例如:

SomeFile.txt 的内容为:

result.txt 的内容为:

NUL 是一个虚拟的设备(文件),将 stdout 重定向到 NUL ,则会丢弃标准输出。例如:

屏幕上不会输出任何内容。在比如屏蔽掉错误输出,以上文中的 test.cmd 脚本为例,

只输出了 Hello, 错误的内容并没有输出。

如果要把一条命令的输出作为另外一条命令的输入,可以借助 | *** 作符来完成。例如将当前目录下的文件排序:

倒序:

有个技巧可以在命令提示符窗口中创建文本文件或者脚本,通过 CON 将命令提示符自己的输入重定向到一个文件。输入完成后需要按下 Ctrl + C , 发送一个结束符(EOF)。键悉纯

类似的技巧还有许多,比如新建一个空文本:

在DOS上还有一些其他的特殊设备可以重定向,但是大多数有点类似于LPT1(用于并行端口打印机)和COM1(用于串口设备,如调制解调器)。

写的不错批处理教程

如何创建批处樱孝理文件?

将记事本打开,什么都不用写,然后选择文件,保存.保存类型选择所有拍迹文件,文件名则命名为*.bat这个*代表是文件名,你可以随便的起.保存好之后,看看你保存的地方,会出现一个白色窗口里有个黄色齿轮的图标.这东西就是你创建的批处理文件,双击他就可以运行,但他现在由于里面没有输入任何命令,所以他运行了并不会做任何事情.当我们想往这个*.bat文件中添加东西时,只要右键选择他,然后选择编辑,就可以打开记事本往内输入命令了.

批处理文件中的命令是什么?

批处理文件中的命令暂时先可以理解为dos命令,等稍后深入理解了以后再进行解释.批处理顾名思义就是一大堆东西堆在一起处理.换句话说就是往里面写一条条 dos命令,然后按顺序挨个执行,效果跟你在cmd里敲dos命令是一个效果.只不过用批处理写好之后,要运行只要双击下就可以运行了.而不用再一遍一遍的重复的往里面打命令.这就是批处理文件的好处.

除了运行dos命令之外,他还可以支持选择结构if,循环结构for,goto等,与c有点类似,但远没有c全面,并且脊贺稿编写语言十分不规范.

批处理语法:

先讲个最基本的东西 @echo off

echo 的意思是回旋,这里的意思就是回显,echo off意思就是关闭回显.前面的@表示echo off 这一行也不会回显你可以试着去掉@和整行去掉.@的另一个功能是在执行完批处理文件时自动恢复命令回显。如果第一句用的是ECHO OFF,那么在执行完批处理文件以后不会显示命令提示符。

举个例子:如果我们先创建一个1.bat文件,往里面输入:

dir 然后保存在c:\下.然后我们运行cmd,进入c盘根目录下,输入1.bat,则显示:

C:\>dir 驱动器 C 中的卷没有标签。 卷的序列号是 0C5D-07FF

C:\ 的目录

2004-08-25 00:45 <DIR>WINDOWS2004-08-25 00:51<DIR>Documents and Settings

.....

C:\

如果将1.bat内容修改成

echo off

dir

然后再在cmd里输入1.bat,则会显示

C:\>echo off

//因为运行了echo off,所以没有显示dir命令,直接显示了结果 驱动器 C 中的卷没有标签。 卷的序列号是 0C5D-07FF

C:\ 的目录

2004-08-25 00:45 <DIR>WINDOWS2004-08-25 00:51<DIR>Documents and Settings

.....

C:\

如果将1.bat文件修改成:

@echo offdir

则显示成:

C:\>1.bat

//与前面不同,并没有显示echo off,原因是加了@,所以不显示@后面的内容.又因为加

//了echo off,所以后面的命令不显示,直接显示结果 驱动器 C 中的卷没有标签。 卷的序列号是 0C5D-07FF

C:\ 的目录

2004-08-25 00:45 <DIR>WINDOWS2004-08-25 00:51<DIR>Documents and Settings

.....

C:\

通过以上的比较,相信你对echo off命令已经充分掌握了.

接下来讲的是call命令:

call 的意思为调用.假如有2个批处理文件a.bat和b.bat.如果我想运行a.bat的当中运行b.bat.如何运行呢?其实很简单,只要在a.bat文件中输入call命令,则可以在a.bat运行的当中,运行b.bat,等b.bat运行完之后,继续执行a.bat

call命令格式:

CALL [drive:][path]filename [batch-parameters]

batch-parameters 指定批处理程序所需的命令行信息。

举例如下,我们在c盘根目录下创建a.bat文件,内容为:

echo this is a.bat

call d:\b.bat

echo done

然后在d盘根目录下创建b.bat,内容为:

echo this is b.bat

保存后,打开cmd,进入c盘根目录,然后输入1.bat,显示如下:

C:\>a.bat

C:\>echo this is a.batthis is a.bat

C:\>call d:\b.bat

C:\>echo this is b.batthis is b.bat

C:\>echo donedone

三种方法

1

你执行的命令可能有自动应答参数

比如

1

net use * /del

默认是要让你确认是否删除全部连接的

但你可以加上/y 这个自动应答参数就可以了

net use * /del /y

注意大部分命令的自动应答参数是/y 但不是全部,比如del的是/q

也有很多命令没有自动应答参数,这时候就需要一下两种方法了

2

echo y | net use * /del 可以达到和下条命令一样的效果

net use * /del /y

原理是利用echo回显命令把y这个字符通过 | 这个管道符号传递给net use * /del

楼猪请举一反三

3

利用翠玉仙姑的办法,先建立一个文本文件

在里边输入一个y字符

net use * /del <c:\xx.txt

可以和net use * /del /y

还有echo y | net use * /del

达到一样的效果

0000000000000000000000000000000000000000000000000

第三种办法最为烦琐但更为灵活功能更强大一迹搜陪点

可以实现二次应答或者三次应答四次应答....

比如我们要格式化某一个有卷标的分区

format d: /fs:fat32

键入以上命令的时候会提示你输入卷标

输入正确的话会提示你确认格式化吗?

这里就需要应答两次

这时就可以把要应答的内容先写到文漏宽本文件里边

每一次应答写一行

比如这里的话应该姿蠢这样写

===================

dpan

y

===================

我们假设d盘的卷标为dpan

format d:/fs:fat32 <c:\xx.txt

这样就可以顺利地自动格式化掉d盘了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12391715.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存