最小化当前终端 执行命令 cmd 奇技淫巧

@echo off
%1 (start /min cmd.exe /c %0 :&exit)
echo put your code below
pause

事实上,执行完第二行,由于&exit 存在,当前终端会退出,所以在当前的终端,是不会继续执行第三行以及后面的代码的。
第二行的作用:

  1. 当前终端,因为仅仅只调用了批处理文件,所以 %1 是空的,所以不影响。
  2. start /min 重新打开一个终端,并最小化运行后面的命令
  3. cmd.exe /c 调用cmd.exe 程序,并用/c 参数,执行完后,即退出终端,这样保持 运行批处理文件的方式,即运行结束之后,自动关闭终端。
  4. %0 : 事实上,这是两个参数,%0 即当前批处理文件,即递归的调用自身文件,第二个参数 :,这里利用了一个批处理的语法特性,:放在句首,仅作代码块标签命名使用,用于goto语句的跳转,:之后的语句并不会执行,但在剧中却并不会产生作用。类似的这里两个冒号::,它在句首起注释作用,但是句中出现,不起作用。在这段中,冒号也会作为cmd.exe的参数,被标记为%1,这就是它tricky的地方,在被调用的终端执行脚本中,第二行的句首 %1变成了:,那么第二行就被标记不再被执行(如果是::则被注释,效果类似),然后就继续执行。

原本以为这是我没遇到过的语法,不断实验之后,发现 %1:必须同时出现才能实现只递归调用一次的效果,猛然领悟,有点舒服。

Note: 需要注意的是,由于利用了引用参数的关系,所以,批处理脚本不能存在参数,否则,就蛋疼了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 命令简介 cmd是command的缩写.即命令行 。 虽然随着计算机产业的发展,Windows 操作系统的应用越来...
    Littleston阅读 3,360评论 0 12
  • 运行操作 CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) CM...
    小沐子_IT阅读 2,659评论 0 4
  • 运行操作 CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) CM...
    小明yz阅读 2,908评论 0 8
  • win7 cmd管理员权限设置 net localgroup administrators 用户名 /add 把“...
    f675b1a02698阅读 5,421评论 0 11
  • 一、命令行 1. calc-----------启动计算器 2.certmgr.msc----证书管理实用程序 3...
    小小辛_c阅读 727评论 0 2