批处理一闪即逝的几种情况分析

一、批处理文件名中包含“&”、“^”

此问题在Win7、Win8、Win10中都会出现,具体表现为使用右键以管理员身份运行时批处理一闪即逝,双击运行则正常。这个问题是本人在2010年12月发现的,应该是Windows的一个BUG,当时还发了几条微博。

假设文件名为“A&B.bat”,系统会认为“&”前后是两条语句,所以会执行“A”和“B.bat”。

假设文件名为“A^B.bat”,系统会忽略“^”,所以实际上运行的是“AB.bat”。

但是一般情况下当前文件夹中并没有“A”、“B.bat”、“AB.bat”这几个文件,于是就自动退出了。这里说明一下,运行“A”时,系统不会运行无扩展名的“A”,而是会按照环境变量%PATHEXT%里面的值“.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC”按顺序进行查找“A.COM”、“A.EXE”……

为此我们可以进行验证,在某个文件夹中新建这6个文件A、A&B.bat、A.bat、A^B.bat、AB.bat、B.bat。

除A&B.bat和A^B.bat外,内容均为

@Echo %~nx0
@Pause

其中%~nx0表示当前批处理文件(0)的文件名(n)及扩展名(x)。A&B.bat和A^B.bat需要把%~nx0换成A^&B.bat和A^^B.bat,因为“&”和“^”都需要转义才能显示。

双击直接运行A&B.bat:

 

右键管理员身份运行A&B.bat:

 

你还可以将A.bat、B.bat删除其中一个或者都删除再看看运行结果,我就不截图了。A^B.bat的结果和A&B.bat类似,也不截图了。

 

二、环境变量%PATH%有问题

批处理中调用了系统目录下的程序,但是PATH有问题导致找不到文件。这个问题的起因,可能是你手工修改失误,也可能是安装了什么软件对PATH进行了修改,最常见的是MacType这个软件。

虽然FlyingSnow说MacType的这个BUG早已修复,但是本人Win7 x64亲测这个BUG在目前最新版2010.1231.0中依然存在,之前没有安装过任何旧版本MacType。

目前导致这个问题的具体原因还不太清楚,因为PATH看上去是正确的,一种可能有效的解决办法是在PATH最后加一个“;”再保存,如果不行可以再把最后的“;”删掉再保存。

 

三、批处理本身编写有误

拼写错误、忘记加pause这些低级错误我就不说了。说一个稍微高级一点儿的关于for的错误。

在批处理中for语句的变量都要写两个%,比如%%i,而在CMD中只需一个,这是一个比较容易出错的地方,如果在批处理中写成了%i,在运行到这条语句时就会提示错误然后自动退出。

下面介绍一种方法可以看到一闪即逝的错误,方便找到原因:

先Win+R打开运行窗口,输入CMD回车,打开CMD窗口,然后将批处理文件拖入CMD窗口,此时文件的路径会出现在屏幕上,然后按回车即可。

当然为了方便你也可以为bat文件添加一个右键菜单,具体步骤我就不讲了,Google有的是,命令行这样写

"C:\Windows\System32\cmd.exe" /k "%1"

 

四、CMD被禁用

这个问题一般不会导致一闪即逝,而是会提示“命令提示符已被系统管理员停用”。

既可以在组策略中修改也可以在注册表中修改

  • 组策略中的位置:

Win+R打开运行窗口输入gpedit.msc回车打开组策略

左侧选择用户配置 – 管理模板 – 系统,然后右侧找到“阻止访问命令提示符”,选择未配置即可

  • 注册表中的位置:

DisableCMD键值的位置在

HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System

DisableCMD为1表示禁用命令提示符和批处理文件,2表示只禁用命令提示符,改成0或者删除就可以解禁了

 

UPDATE: 如果修改后依然提示被禁用,可能是你中过病毒,修改了注册表

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths\{403cf677-e149-45df-bf2d-b320958e5ada}

里面内容为

  • LastModified = AA 7A 59 05 D2 2C CC 01
  • Description = “”
  • SaferFlags = 0×00000000
  • ItemData = “cmd.exe”

将这个项{403cf677-e149-45df-bf2d-b320958e5ada}整个删除即可

感谢群友无影的反馈

 

如果你还遇到其他情况,请告诉我


您可能还喜欢...

46 条回复

  1. 软件小品说道:
    Google Chrome 22.0.1229.94 Google Chrome 22.0.1229.94 Windows 8 x64 Edition Windows 8 x64 Edition

    好文章!转载一下!

  2. 木偶柔情说道:
    Firefox 16.0 Firefox 16.0 Windows 7 Windows 7

    老大,你迅雷的安装时专用链怎么用的,快车链接不支持啊!

  3. 耍下说道:
    Google Chrome 21.0.1180.79 Google Chrome 21.0.1180.79 Windows 7 x64 Edition Windows 7 x64 Edition

    开始恢复文章了啊

  4. 匿名说道:
    Firefox 16.0 Firefox 16.0 Windows 7 Windows 7

    我发现了一个jayxon博客数据全部丢失之后的好处,就是我可以一篇一篇好好看看你的文章了……呵呵。开个玩笑!

  5. 12说道:
    Internet Explorer 10.0 Internet Explorer 10.0 Windows 8 Windows 8

    老大,随云成立啦啊!

    http://WWW.SUIYUN.ORG

  6. 今晚打老虎说道:
    Google Chrome 22.0.1229.92 Google Chrome 22.0.1229.92 Windows 7 x64 Edition Windows 7 x64 Edition

    jayxon,“友链”页面发表不了评论!
    我之前跟你做了友链的,也知道您最近VPS完蛋了,呵呵。
    麻烦再次添加上去。
    我的网站名称:我你分享网
    我的网站地址:iyshare.com
    一句简介:我你分享网-专注软件分享与技术创新

  7. 63.说道:
    Internet Explorer 10.0 Internet Explorer 10.0 Windows 8 Windows 8

    老大qq又正式版了/

    是不是要出一个呢。

    顺便把上一版的那个bug给修复了

  8. one1说道:
    rekonq rekonq GNU/Linux x64 GNU/Linux x64

    好文章 !~

  9. 凯歌说道:
    Internet Explorer 8.0 (Compatibility Mode) Internet Explorer 8.0 (Compatibility Mode) Windows XP Windows XP

    大侠:能否更新一下QQ 5058

  10. 醉倚黄昏说道:
    Google Chrome 22.0.1229.94 Google Chrome 22.0.1229.94 Windows 7 x64 Edition Windows 7 x64 Edition

    这个可以标记一下,不过不加pause不算错误吧~

  11. 5说道:
    Internet Explorer 10.0 Internet Explorer 10.0 Windows 8 Windows 8

    。老大。您什么时候更新企鹅啊

    用了几个网上的5058的。都不如您弄的好啊。

  12. 少轻狂说道:
    Maxthon 3.0 Maxthon 3.0 Windows 7 Windows 7

    迅雷精简版做的不错,交换一下友情链接,希望加上。

    轻狂志
    http://www.flighty.cn
    一句话简介:临风睨天笑,扬眉剑出鞘!

  13. HornHon说道:
    Google Chrome 22.0.1229.94 Google Chrome 22.0.1229.94 Windows 7 x64 Edition Windows 7 x64 Edition

    其实MacType已经出到1.2012.1022.0了..

  14. Jack_Lei说道:
    TheWorld Browser TheWorld Browser Windows 7 Windows 7

    看看尾巴,哈哈

  15. CCAV说道:
    Firefox 16.0 Firefox 16.0 Windows 7 Windows 7

    你修改的QQ中的辅助工具.bat一闪即逝,这篇文章的方法都解决不了。我电脑大部分批处理都是这样,但也有小部分是正常的。。。怎么解决。。。。

  16. 优酷去广告说道:
    Google Chrome 22.0.1229.94 Google Chrome 22.0.1229.94 Windows XP Windows XP

    厉害哦!

  17. FateRover说道:
    Sogou Explorer Sogou Explorer Windows XP Windows XP

    不知J大还关注这篇留言不?环境变量更改 的确会引起bat闪退 之前正常 安装了jdk,配置环境变量后(配置正确) 就闪退了 纠结

  18. g_man1990说道:
    TheWorld Browser TheWorld Browser Windows 7 x64 Edition Windows 7 x64 Edition

    求助:tskill explorer.bat 内就 tskill explorer 这条命令

    1、在资源管理器里点击运行成功
    2、但我在“ObjectDock”+“Stacks Docklet 1”上点击就提示:’tskill’不是内部或外部命令……

    和解?

    • JayXon说道:
      Google Chrome 27.0.1448.0 Google Chrome 27.0.1448.0 Windows 7 x64 Edition Windows 7 x64 Edition

      试试换成”%windir%\system32\tskill”

      • g_man1990说道:
        TheWorld Browser TheWorld Browser Windows 7 x64 Edition Windows 7 x64 Edition

        依旧是上面那个环境:
        1、tskill:’tskill’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
        2、%windir%\system32\tskill:’C:\Windows\system32\tskill’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

  19. g_man1990说道:
    TheWorld Browser TheWorld Browser Windows 7 x64 Edition Windows 7 x64 Edition

    http://wenwen.soso.com/z/q436935071.htm
    这个问题 何解?就是:
    cmd 命令 设置服务 自动(延迟启动):
    sc config “服务名” start=?

  20. oooxxx说道:
    CoolNovo 2.0.7.10 CoolNovo 2.0.7.10 Windows 7 x64 Edition Windows 7 x64 Edition

    我想知道你用的什么windows主题。。。。

  21. 哎呀呀说道:
    Google Chrome 23.0.1271.91 Google Chrome 23.0.1271.91 Windows XP Windows XP

    hi,我最近也遇到了这个问题,是在使用node过程中出现的。主要是node命令可用,npm命令无法使用。查来查去,发现是cmd文件执行无效,点击之后闪一下就消失了。命令窗口直接执行就跟普通回车换行样没反应,但是像ipcinfog系统命令都是有效的。
    然后我自己编写了个简单的bat文件,就是一行echo,一行pause,运行也是只闪一下。 望邮件答复下,非常谢谢~

  22. 哎呀呀说道:
    Google Chrome 23.0.1271.91 Google Chrome 23.0.1271.91 Windows XP Windows XP

    ipconfig,敲错了

  23. g_man1990说道:
    TheWorld Browser TheWorld Browser Windows 7 x64 Edition Windows 7 x64 Edition

    CMD 里 可不可以实现这样的功能?
    打开1.exe程序并向它发送enter键
    start 1.exe 然后怎么发送?

  24. 界丝说道:
    Internet Explorer 10.0 Internet Explorer 10.0 Windows 8 x64 Edition Windows 8 x64 Edition

    学习一下看看

  25. 爱你的人说道:
    Google Chrome 33.0.1750.117 Google Chrome 33.0.1750.117 Windows 8.1 x64 Edition Windows 8.1 x64 Edition

    分析的不错

  26. Sogou Explorer Sogou Explorer Windows 7 Windows 7

    好文章

  27. Davd说道:
    Google Chrome 31.0.1650.63 Google Chrome 31.0.1650.63 Windows 8.1 x64 Edition Windows 8.1 x64 Edition

    win 10 好像改了啊!

    • JayXon说道:
      Google Chrome 45.0.2454.101 Google Chrome 45.0.2454.101 Windows 10 x64 Edition Windows 10 x64 Edition

      测试了一下,只是改了A&B.bat的情况,现在只会执行A.bat,不会执行B.bat了。并没有修复这个bug。

  28. 受益匪浅说道:
    TheWorld Browser TheWorld Browser Windows 7 x64 Edition Windows 7 x64 Edition

    最近在学for命令,那个百分号太隐藏了,找了半天

  29. jayxon说道:
    Google Chrome 117.0.0.0 Google Chrome 117.0.0.0 Android 10 Android 10

    review all files recover access

  1. 2013 年 4 月 19 日
    WordPress 3.5.1 WordPress 3.5.1

    […] 文件名不能包含=、%、&等特殊字符,否则以管理员运行的时候只会一闪而过。(参考:批处理一闪即逝的几种情况分析) […]

发表评论

您的电子邮箱地址不会被公开。