Windows批处理的高级用法

有这么一个需求,要求做一个批处理文件,能够自动执行某个目录中的几个可执行文件,并且把它们的屏幕输出存入一个Log文件中。这里涉及到两个问题:

如何将屏幕输出转向到文件
如何确定Log的文件名
这两个问题都比较简单。第一个问题,通过“>”和“>>”可以轻松搞定,第二个问题似乎也不难,因为Windows支持环境变量,其中有一个“%DATE%”代表当前的日期,还有个“%TIME%”代表当时的时间,精确到百分之一秒。似乎这已经足够了吧,于是写出下面的脚本:

@echo off
SET LogFile=%DATE%%TIME%.log

app1.exe param1 param2 > %LogFile%
app2.exe param1 param2 >> %LogFile%
app3.exe param1 param2 >> %LogFile%
但是,很可惜,它无法按预期结果运行,它只会生成一个没有扩展名的文件,形如“2006-05-25”。想了想,哦,明白了,因为%DATE%打出来的东西是“2006-05-25 星期四”,遇到空格之后重定向的机制就开始起作用了,它以为这就是文件名全称了。
好了,那么我来加上引号,这下应该无敌了吧。

@echo off
SET LogFile="%DATE%%TIME%.log"

app1.exe param1 param2 > %LogFile%
app2.exe param1 param2 >> %LogFile%
app3.exe param1 param2 >> %LogFile%


但是,还是很可惜,Windows会报告“参数错误”。这又是怎么了呢?嗯,原来,Windows不允许文件名或目录名中含有“:”,而%TIME%的输出结果中恰好有两个“:”。这就无语了。
正在绝望之时,突然在命令行里鬼使神差的敲了一个“help set”,一切问题都明白了!以前都没有意识到啊,Windows批处理竟有如此强大的威力(当然,这还是没法和*nix比,不过已经比原来认识到的强多了)。
现在知道了,这个脚本可以这样写:

@echo off
SET LogFile=%DATE%%TIME%
REM 把 : 都替换成 -
SET LogFile=%LogFile::=-%
REM 把空格都替换成 -
SET LogFile=%LogFile =-%
REM 把 . 都替换成 -
SET LogFile=%LogFile.=-%

SET LogFile=%LogFile%.log

app1.exe param1 param2 > %LogFile%
app2.exe param1 param2 >> %LogFile%
app3.exe param1 param2 >> %LogFile%

至于具体的原理,大家可以在命令行里面敲help set就可以清楚看到了,Windows的文档做的就是好啊。
此外,还有help if和help call也很值得看,这些东西组合起来就构成了Windows批处理的高级用法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows批处理是一种简化任务的命令脚本语言,可以将一系列指令按照特定顺序自动执行,提高工作效率。以下是关于Windows批处理的教程PDF的相关说明。 Windows批处理教程PDF是一本以PDF格式呈现的教程书籍,旨在帮助初学者了解和学习Windows批处理的基础知识和应用技巧。 该教程PDF包含了Windows批处理的概述、语法规则、基本指令和常用命令等内容。通过逐步引导,读者可以学习如何编写和运行批处理脚本,实现自动化操作。 教程的第一部分介绍了批处理的概念和应用场景,帮助读者理解为什么使用批处理以及其优势。 接下来,教程详细解释了批处理脚本的语法规则和基本指令,例如变量、条件语句、循环结构等。读者可以通过示例代码和实例应用了解这些概念的具体用法。 然后,教程介绍了一些常用的批处理命令,例如文件操作、系统命令、网络命令等。这些命令可以帮助读者实现一些实用的功能,如文件备份、文件夹批量处理等。 最后,教程还包含了一些高级主题,如错误处理、参数传递、批处理脚本调试等。这些主题可以帮助读者提高批处理脚本的稳定性和可维护性。 总之,Windows批处理教程PDF是一本通过简单易懂的语言和实用的示例,帮助读者快速入门和掌握批处理技术的教程书籍。读者可以通过学习这本教程,提高工作效率,简化繁琐的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值