使用elevate.exe在批处理脚本中运行提升的cmd.exe

时间:2014-10-15 13:02:37

标签: batch-file

我正在为windows7编写dos批处理文件,它有许多需要提升运行访问权限的命令。升级我正在使用elevate.exe。我在下面做 -

set Elevation=elevate -wait cmd.exe /c 
%Elevation% "cd /d %CD% && xcopy /E /Y ...."
%Elevation% "cd /d %CD% && command 2 .."
%Elevation% "cd /d %CD% && command 3 .."
%Elevation% "cd /d %CD% && command 4 .."
.....

我的脚本调用为cmd提升,然后为每个命令调用cd /d %CD%,因为提升将工作路径更改为/ system32每次运行提升时,我都被迫更改目录。它还会提示用户输入" UAC"每个提升命令的对话框,所以十个这样的命令UAC提示会出现10次:cry:。我使用的命令是DOS命令(如xcopy,diskpart等)和其他一些第三方可执行文件的混合。所以有两个问题我需要一些帮助 -

  1. 如何为cmd.exe调用一次提升并在同一个提升的控制台中运行其余命令。
  2. 如何使用每个命令更改一次工作目录。我认为第一个解决方案也会解决这个问题。
  3. 非常欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以创建第二个批处理文件,其中包含所有命令,然后提升它。

注意:我将%CD%更改为C:\YourFolder,因为%CD%是当前目录...因为您更改它是没有意义的已经进入了它。

SECOND.BAT(无论你想要什么名字)

cd /d C:\YourFolder
xcopy /E /Y ....
command 2 ..
command 3 ..
command 4 ..

从原始批处理文件中执行以下操作:

set Elevation=elevate -wait cmd.exe /c 
%Elevation% "C:\YourFolder\SECOND.BAT"