2014-10-11 197 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

相关问题