2014-10-11 196 views
1

我的批處理文件生成另一個批處理文件。它正常運行時正常工作。正常工作,但不以管理員身份運行時

@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 

但是,當您以管理員身份運行它時,它不起作用。我需要在以管理員身份運行時也能正常運行。什麼是正確的方法來做到這一點?

回答

1

以管理員身份運行時,它會更改當前的上下文目錄。我不知道其中它改變,但你可以通過指定完整的輸出路徑轉換到新的批處理文件,像這樣避免這樣的問題:

@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 
+0

啊,它將當前目錄更改爲_C:\ Windows \ System32_。我應該明白這一點。 – 2014-10-11 02:52:22

相關問題