网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月26日漏签0天
bat吧 关注:16,745贴子:231,776
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 4回复贴,共1页
<<返回bat吧
>0< 加载中...

Windows批处理的高级用法

  • 只看楼主
  • 收藏

  • 回复
  • 囧囧战神Orz
  • Dir
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

嗯,标题好像很大,貌似会图文并茂的讲解很多用法似的……嘿嘿,其实没这么复杂,只是从一个例子出发,抛砖引玉,引出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批处理的高级用法。
嗯,说完了(噢,好像什么都没说啊……)。



  • Iona
  • Findstr
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
。。。看了半天不知道你是不是在自言自语。。。


2025-07-26 01:16:38
广告
不感兴趣
开通SVIP免广告
  • Felyme
  • Pushd
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
貌似有点标题党


  • NFWSA
  • For
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看了半天没发现有什么高级用法,只有无意中的好想法。


  • samkt
  • Mode
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
....%date:~0,10% 不解释


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 4回复贴,共1页
<<返回bat吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示