2013-05-15 21 views
0

該命令位於一個大型批處理文件的中間,該文件在Windows XP下運行超過5年,但運行時在Windows 7(32位)下,它報告「MyBatch.bat不被識別爲內部/外部命令,可操作程序或批處理文件」。cmd/C「MyBatch.bat Param1 Param2 Param3」在WinXP下工作,但在Win7下失敗

如果我將主批處理文件編輯爲在'cd'或'dir'前面的行,它將顯示MyBatch.bat存在的目錄,但cmd找不到它。

我發現使呼叫工作的唯一方法是在行前加上'set path =%path%;%cd%',但這隻能用,因爲MyBatch.bat的位置現在在路徑。這對於主批處理文件的其餘部分來說是不切實際的解決方案。我無法使用'調用MyBatch.bat ...',而是在其他地方使用cmd/C來調用.exe文件。

在我的系統中,'cmd'在註冊表中設置爲管理員模式,並啓用了命令擴展(對於主批處理文件所需的某些處理所需的管理員模式)。我也嘗試將cmd設置爲WINXPSP3兼容模式,但它沒有區別。

這就好像Win7版本的cmd只使用%path%來查找內容,而不是查看它正在運行的目錄,而WinXP版本則是。我在任何地方都沒有見過這種限制。

我誤解了某些東西或錯過了某個步驟或註冊表標誌? 有沒有辦法使WinD下的cmd工作,因爲它在WinXP下?

+0

你可能是對的,但你應該提供真實的生活數據,而不是'「MyBatch.bat Param1 Param2 Param3」'。 – Endoro

+0

什麼是使用的實際文件夾? Win 7和Win 8中的管理員比Win XP中的管理員擁有更少的訪問權限。嘗試右鍵點擊批處理文件並以「管理員身份運行」。看看它是否成功。 – foxidrive

+0

@Endoro - 感謝您的回覆。我不認爲添加真正的參數會有幫助,因爲它們只會意味着批處理文件處理它們的情況,但完整的行是: cmd/C「MkPCBld。蝙蝠發佈Nowait NoDemo「 – Falstaff

回答

1

如果MyBatch.bat是在同一目錄中的腳本調用它,你總是可以做到這一點:

call "%~dp0MyBatch.bat" ... 
+0

也可用:'。\ MyBatch.bat'。 – michaelb958

+0

編號''.'是工作目錄,它可能與其中的目錄不同'%CD%'同樣適用 –

+0

對不起,我的錯誤 – michaelb958

0

我相信你需要檢查cmd /?文件,如果沒有指定/d開關具體發生了什麼 - 有一些註冊表項控制CMD啓動過程中發生的情況,這可能是您問題的根本原因。

我目前還不能確認我的機器上 - 我已經沒有這樣的問題,但提到的註冊表項也缺少...

+0

謝謝。我嘗試了/ d選項,但它沒有任何作用(在過去的兩天裏我幾乎嘗試了所有的東西)。據我可以告訴'cmd /?'在WinXP上的結果與在Win7上的結果相同。我認爲這兩種行爲都應該是相同的。它在Win7上運行時似乎並不在當前目錄中,而是在WinXP上運行。這很令人沮喪。 – Falstaff

0

感謝AnsgarWiechers大約%〜DP0尖端。我在批處理文件中添加了'cmd/C'Echo%〜DP0''來查看目錄'cmd'想法它正在運行。這給了我解決問題所需的線索。

我會爲註冊表中的cmd.exe設置一個「AutoRun」目錄。我沒有意識到,只要調用了'cmd',即使在批處理文件中,這也會產生影響,而不僅僅是當我打開cmd窗口時,就像我想的那樣。

我已經刪除了自動運行條目,現在它工作正常。

感謝大家的幫助建議。

相關問題