以管理員身份運行時,它會更改當前的上下文目錄。我不知道其中它改變,但你可以通過指定完整的輸出路徑轉換到新的批處理文件,像這樣避免這樣的問題:
@echo off
type NUL > "C:\Users\Troy\Documents\Software\batch files\batchfile.bat"
ECHO @echo off >> "C:\Users\Troy\Documents\Software\batch files\batchfile.bat"
ECHO set hostspath=%%windir%%\System32\drivers\etc\hosts >> "C:\Users\Troy\Documents\Software\batch files\batchfile.bat"
ECHO exit >> "C:\Users\Troy\Documents\Software\batch files\batchfile.bat"
exit
更新:我剛剛發現,有一個辦法動態地將當前目錄改爲與當前正在執行的批處理文件相同的目錄。所以,以下可能是一個更乾淨的解決方案。它只需要在原始腳本的頂部添加一行:
cd %~dp0
@echo off
type NUL > batchfile.bat
ECHO @echo off >> batchfile.bat
ECHO set hostspath=%%windir%%\System32\drivers\etc\hosts >> batchfile.bat
ECHO exit >> batchfile.bat
exit
啊,它將當前目錄更改爲_C:\ Windows \ System32_。我應該明白這一點。 – 2014-10-11 02:52:22