none
windows7下bat文件不能正常运行 RRS feed

  • 常规讨论

  • 运行bat批处理文件的时候,总是打开cmd并显示显示路径为当前bat文件所在路径,但是没有运行bat文件。如果把bat文件扩展名改为cmd则可以正常运行。求教。
    2012年6月15日 10:41

全部回复

  • 1. 請首先檢查是否為該批處理本身的行為所致.

    同時提供一個帖子供參考

    CMD下遇到带空格的问题,求教一下如何避免
    http://social.technet.microsoft.com/Forums/zh-CN/window7betacn/thread/5ee529ed-2ef9-439f-9e83-c4769c34e420

    2. 如果不是, 請確認是否為所有批處理都存在此問題.

    3. 如果是, 請先將系統中的註冊表項 HKCR\batfile 導出備份, 然後刪除該項, 最後將正常系統該項導入恢復.

    4. 如果是在通過鼠標右鍵以管理員權限運行發生的問題, 那麼你可以參見下面這篇帖子介紹的方法, 來嘗試解決.

    64bit win7 下面脚本为何一闪而过
    http://social.technet.microsoft.com/Forums/zh-CN/window7betacn/thread/25fdf9bb-2539-4700-b351-f4a73a033994


    Folding@Home

    2012年6月15日 11:51
  • 请测试一下是否所有的批处理文件都有此问题。可以建立一个只运行一条命令的最简单的批处理,看看是否也无法执行那一条命令。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "Fakejoker"
     
    运行bat批处理文件的时候,总是打开cmd并显示显示路径为当前bat文件所在路径,但是没有运行bat文件。如果把bat文件扩展名改为cmd则可以正常运行。求教。
     
     
    2012年6月15日 23:10
  • 测试后所有bat文件都存在如上问题。

    删除原注册表batfile及子项时显示不能完全删除,导出正常系统batfile项也显示不能完全导入。

    如:运行G:\Ga\Rayman Raving Rabbids 2\setup.bat

    bat文件内容:

    @echo off
    SET renchongyi=%CD%
    SET renchongyi=%renchongyi:\=\\%
    > "%Temp%.\regfile.reg" ECHO Windows Registry Editor Version 5.00
    >>"%Temp%.\regfile.reg" ECHO. 
    >>"%Temp%.\regfile.reg" ECHO [HKEY_CURRENT_USER\Software\Ubisoft\Rayman Raving Rabbids 2\{B864EBC6-9DB8-4A5E-9F08-B0CE286785EC}\Application]
    >>"%Temp%.\regfile.reg" ECHO "GameColor"=""
    >>"%Temp%.\regfile.reg" ECHO "InstallLocation"="%renchongyi%"
    >>"%Temp%.\regfile.reg" ECHO "Is first running"=dword:00000000
    >>"%Temp%.\regfile.reg" ECHO "Language"=dword:00000409
    >>"%Temp%.\regfile.reg" ECHO "video_folder"="%renchongyi%\\video"
    >>"%Temp%.\regfile.reg" ECHO.
    >>"%Temp%.\regfile.reg" ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\GamesToFindOnWindowsUpgrade\{757FC55A-5D90-4B1E-8267-0E25A90E382C}]
    >>"%Temp%.\regfile.reg" ECHO "GDFBinaryPath"="%renchongyi%\\autorun.exe"
    >>"%Temp%.\regfile.reg" ECHO "GameInstallPath"="%renchongyi%"
    >>"%Temp%.\regfile.reg" ECHO.
    >>"%Temp%.\regfile.reg" ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Ubisoft\Rayman Raving Rabbids 2 ]
    >>"%Temp%.\regfile.reg" ECHO.
    >>"%Temp%.\regfile.reg" ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Ubisoft\Rayman Raving Rabbids 2 \1.00.0000]
    >>"%Temp%.\regfile.reg" ECHO.
    >>"%Temp%.\regfile.reg" ECHO [HKEY_USERS\S-1-5-21-3853239535-1952086437-795627688-500\Software\Ubisoft\Rayman Raving Rabbids 2\{B864EBC6-9DB8-4A5E-9F08-B0CE286785EC}\Application]
    >>"%Temp%.\regfile.reg" ECHO "GameColor"=""
    >>"%Temp%.\regfile.reg" ECHO "InstallLocation"="%renchongyi%"
    >>"%Temp%.\regfile.reg" ECHO "Is first running"=dword:00000000
    >>"%Temp%.\regfile.reg" ECHO "Language"=dword:00000409
    >>"%Temp%.\regfile.reg" ECHO "video_folder"="%renchongyi%\\video"
    cls
    echo 耐心等待...
    regedit /s "%Temp%.\regfile.reg"
    "%windir%\regedit.exe" /s "%Temp%.\regfile.reg"
    del /F /Q "%Temp%.\regfile.reg"
    cls
    pause

    出现cmd窗口显示为:


    如果在cmd中的路径之后输入bat文件名则可正常执行。

    2012年6月16日 3:59
  • 請驗證一下不能刪除的註冊表項是否包含

    HKCR\batfile\Shell\runas

    以及在驗證一下該項調用命令是否為

    %SystemRoot%\System32\cmd.exe /C "%1" %*


    Folding@Home

    2012年6月16日 8:42
  • HKCR\batfile\Shell\runas\command

    该项命令即为  %SystemRoot%\System32\cmd.exe /C "%1" %*

    2012年6月17日 0:46
  • 如果之前對 bat 的測試都是在同一個目錄中進行, 那麼建議在不同目錄中放置一個簡單的 bat, 比如:

    @echo %time%
    pause

    然後分別以直接執行, 鼠標右鍵以管理員方式執行, 通過 cmd 執行. 觀察不同的執行方法是否存在差異.

    同時也建議在安全模式執行一下, 以排查問題是否因第三方進程造成.


    Folding@Home

    2012年6月18日 11:40
  • 尝试过不同目录,直接执行和管理员执行都只是打开cmd窗口显示路径,没有执行bat文件。安全模式下也是这种情况。

    在cmd窗口的路径之后输入bat文件名执行则可以正常执行bat文件。

    如果把bat文件扩展名改为.cmd则可以正常执行其中的命令。

    2012年6月18日 15:33
  • 建議提供一下註冊表項

    HKCR\batfile

    的所有內容, 以便查找原因.


    Folding@Home

    2012年6月19日 5:54
  • 应该是bat文件关联问题

    给我写信: QQ我:点击这里给我发消息

    2012年6月20日 12:30
  • 没有设置过关联,文件关联显示如图。

    2012年6月21日 5:12
  • HKCR\batfile\DefaultIcon 数据:%SystemRoot%\System32\imageres.dll,-68

    HKCR\batfile\Shell\edit\command 数据:%SystemRoot%\System32\NOTEPAD.EXE %1

    HKCR\batfile\Shell\open  EditFlags

    HKCR\batfile\Shell\open\command 数据:"%1" %*

    HKCR\batfile\Shell\print\command 数据:%SystemRoot%\System32\NOTEPAD.EXE /p %1

    HKCR\batfile\Shell\runas\      HasLUShield 数据为空

    HKCR\batfile\Shell\runas\command 数据:%SystemRoot%\System32\cmd.exe /C "%1" %*

    HKCR\batfile\Shell\runasuser\

    HKCR\batfile\Shell\runasuser\command DelegateExecute数据:{ea72d00e-4960-42fa-ba92-7792a7944c1d}

    HKCR\batfile\ShellEx   子项{8895b1c6-b41f-4c1c-a562-0d564250836f}数据:{1531d583-8375-4d3f-b5fb-d23bbd169f22}

    HKRC\batfile\ShellEx\ContextMenuHandlers 默认子项数据:Compatibility

    HKRC\batfile\ShellEx\ContextMenuHandlers\Compatibility 数据:{1d27f844-3a1f-4410-85ac-14651078412d}

    HKEY_CLASSES_ROOT\batfile\ShellEx\DropHandler 数据:{86C86720-42A0-1069-A2E8-08002B30309D}

    HKEY_CLASSES_ROOT\batfile\ShellEx\PropertySheetHandlers\PifProps 数据:{86F19A00-42A0-1069-A2E9-08002B30309D}

    HKEY_CLASSES_ROOT\batfile\ShellEx\PropertySheetHandlers\ShimLayer Property Page 数据:{513D916F-2A8E-4F51-AEAB-0CBC76FB1AF8}

    2012年6月21日 5:31
  • 請檢查註冊表項

    HKCU\SOFTWARE\Microsoft\Command Processor

    HKLM\SOFTWARE\Microsoft\Command Processor

    的鍵 AutoRun

    如果該鍵存在,請重命名或將其刪除, 然後觀察 batfile 執行是否恢復正常.

    不恰當的 AutoRun 設置可能導致這個問題.


    Folding@Home

    2012年6月21日 7:28
  • 如果沒有 AutoRun 設置, 或者刪除後問題依然存在, 那麼就用 Process Monitor 跟踪一下 batfile 的執行

    Process Monitor v3.01
    http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx


    Folding@Home

    2012年6月21日 15:29
  • 这个软件我不太会用,检查过注册表没有autorun项

    算了,我决定不去理会了,我可以把bat改为cmd之后使用的。

    真是麻烦你了。

    2012年6月21日 17:44
  • 不过我的文件夹关联好像有问题,就是bat文件的关联。

    这个文件关联好像不设置就可以运行,但是被设为cmd打开就造成不能运行,能不能恢复之前的不设置。

    2012年6月23日 5:31
  • 查明原因后证明是文件关联的问题,而且我找到解决办法了,方法如下:

    1. 首先在注册表编辑器里打开如下位置:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat
    2. 然后删除OpenWithList和OpenWithProgid以外的所有键
    3. 再打开OpenWithList键,删除Default和MRUList以外的所有值
    4. 检查Default和MRUList两个值,应该分别是空字符串和字符串ba
    5. 打开OpenWithProgid,删除Default和batfile以外的所有值
    6. 检查Default和batfile的值,应该分别是空字符串和空二进制值
    7. 重启之后,控制面板里应该可以看到.bat的关联被重置为Unknown application了,.bat文件也应该可以直接执行了。 

    2012年6月23日 6:06