我的批处理文件生成另一个批处理文件。它在您正常运行时有效。
@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 :(得分: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