2014-10-06 67 views
0

這只是奇怪的。我有一個使用Windows 7的調度程序運行的.bat文件,我注意到在對它進行更新後,它仍然像運行舊版本的.bat程序一樣運行。以管理員身份運行.bat文件,獲取舊版本?

很容易判斷哪一個運行 - 它們輸出到.txt文件,而新版本會轉儲更多信息。因此,在以下三種情況下會發生什麼:

打開cmd窗口(右鍵單擊並以「以管理員身份運行」)。 CD到目錄並以通常的方式執行setvispw.bat,方法是輸入「setvispw.bat」並按Enter。

結果:當前版本按預期運行。

右鍵單擊setvispw.bat和「打開」

結果:當前版本運行正常。但這並不好,因爲我正在更換另一個用戶的密碼並需要管理員權限。

右鍵單擊setvispw.bat和「以管理員身份運行」。 結果:別的東西在運行!看起來它運行的是我前幾天修改.bat之前的版本。

所以我嘗試了一些更奇怪的東西。我用一個虛擬程序替換了我的功能程序......並且正在運行虛擬程序。

最後,我添加了一些「暫停」語句...那是當我得到答案。我將使用「回答你自己的問題」功能,而不是放棄這些故障排除。

回答

0

事實證明,問題是我依賴於setvispw.bat的輸出來告訴我程序運行的是什麼版本。那麼,這兩個新版本和舊版本有這樣一行:

echo Random string is !_RndAlphaNum! > C:\pathname\curVisitorPW.txt 

但是我添加的行是這樣的:

​​

當我在C跑:\路徑,無論是在CMD窗口或不管理員權限,它工作得很好。但是當我使用Admin privs運行時,就像它從Scheduler執行的那樣,工作目錄不是C:\ pathname - 它是C:\ Windows \ System32。直到我添加了「停頓」,並且看到我沒有跑到我想要的位置,我纔看到這些。果然,在System32中有一個curVisitorPW.txt。

該解決方案當然很簡單 - 使用完全限定的路徑名​​。

希望這會派上用場,如果像我這樣的人在.bat文件中看到奇怪的行爲,並開始懷疑是否有某種緩存或管理員權限/特權或其他瘋狂的東西。我準備把它釘在gremlins上,我自己。

相關問題