我有一個在前面加上幾個地址修改PATH
變量的批處理文件。當用戶註銷時,PATH
將重置爲其原始值(在批處理文件運行之前)。這種行爲是好的。Windows CMD - 從批處理文件重置路徑變量?
但是,如果批處理文件運行超過一次,相同的值被重新前置和我結束了一個超長,冗餘路徑變量每批運行後,只是變得更長。
我想重置變量不管它是什麼,當用戶登錄時,預先計劃值之前。我認爲解決方案是將原始值寫入臨時文件並將其讀回,但有沒有更好的方法來完成它?
我有一個在前面加上幾個地址修改PATH
變量的批處理文件。當用戶註銷時,PATH
將重置爲其原始值(在批處理文件運行之前)。這種行爲是好的。Windows CMD - 從批處理文件重置路徑變量?
但是,如果批處理文件運行超過一次,相同的值被重新前置和我結束了一個超長,冗餘路徑變量每批運行後,只是變得更長。
我想重置變量不管它是什麼,當用戶登錄時,預先計劃值之前。我認爲解決方案是將原始值寫入臨時文件並將其讀回,但有沒有更好的方法來完成它?
而不是原來的值寫入到一個臨時文件,你可以把它寫到另一個環境變量:
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%
把@SETLOCAL
在您的批處理文件的頂部。
環境所做的任何更改將批處理文件退出時恢復。
瞭解更多詳情運行setlocal /?
。
我一直在尋找一個類似的問題很長一段時間的解決方案。最後,我結束了使用我已經從下載的pathmgr.cmd:
:
http://gallery.technet.microsoft.com/Batch-Script-To-Manage-7d0ef21e
用它來清潔用戶路徑,下面的選項都可以在命令行中使用pathmgr.cmd/clean/user/p/y
許多其他有用的選項也可用。
這實際上是我最終做的。謝謝! – Ben
這有附加的好處,如果你搞砸了「額外的東西」..你可以修復它。當我第一次使用時,我忘記了尾隨的「\」。感謝您提供簡單而有效的提示! – granadaCoder