2011-08-17 153 views
6

我有一個在前面加上幾個地址修改PATH變量的批處理文件。當用戶註銷時,PATH將重置爲其原始值(在批處理文件運行之前)。這種行爲是好的。Windows CMD - 從批處理文件重置路徑變量?

但是,如果批處理文件運行超過一次,相同的值被重新前置和我結束了一個超長,冗餘路徑變量每批運行後,只是變得更長。

我想重置變量不管它是什麼,當用戶登錄時,預先計劃值之前。我認爲解決方案是將原始值寫入臨時文件並將其讀回,但有沒有更好的方法來完成它?

回答

6

而不是原來的值寫入到一個臨時文件,你可以把它寫到另一個環境變量:

if not defined ORIGINAL-PATH set ORIGINAL-PATH=%PATH% 
set PATH=c:\extra\stuff;%ORIGINAL-PATH% 

,但它會更好,明確檢查你想要的字符串是否在PATH已經或不,像這樣:

echo %PATH% | findstr /c:"c:\extra\stuff;" > nul || set PATH=c:\extra\stuff;%PATH% 
+0

這實際上是我最終做的。謝謝! – Ben

+0

這有附加的好處,如果你搞砸了「額外的東西」..你可以修復它。當我第一次使用時,我忘記了尾隨的「\」。感謝您提供簡單而有效的提示! – granadaCoder

6

@SETLOCAL在您的批處理文件的頂部。

環境所做的任何更改將批處理文件退出時恢復。

瞭解更多詳情運行setlocal /?