强文本script.bat 放置在 sendTo 文件夹中(文件设置为以管理员身份运行,从属性 -> 高级 -> 以管理员身份运行)
@echo off
cd %~dp1
echo %~dp1
echo "%~1"
pause
如果我通过右键单击-->发送到--> script.bat 将参数传递给此文件(例如文件 superuser acc.txt 脚本),则可以工作,但如果我以管理员身份运行脚本,cmd 窗口出现了一秒钟,但是不起作用。
我如何以管理员身份运行此脚本?这段代码之后,有一个需要管理员权限的命令。
编辑#1 我认为问题与带有空格的文件名或路径名里面像“c:\path to space\”或者“file with space.txt”并以管理员身份运行该脚本。
答案1
在文件夹中创建批处理文件的快捷方式shell:sendto
,并按如下方式更改其属性:
- 右键点击 -> ˙属性˙ ->
Shortcut
选项卡; - 目标->
cmd /C "D:\bat\SU\931003.bat"
; Advanced
按钮->以管理员身份运行。
请注意,下面的代码片段中的第一个echo "%CD%"
显示了脚本的初始工作目录("C:\Windows\system32"
如果通过功能启动SendTo
):
==>type D:\bat\SU\931003.bat
@echo off
echo initial working directory "%CD%"
pushd "%~dp1"
echo current working directory "%CD%"
echo paramer #1 supplied "%~1"
echo all paramers %*
net session
pause
示例输出
initial working directory "C:\Windows\system32"
current working directory "D:\bat\1 & 2"
paramer #1 supplied "D:\bat\1 & 2\931003 test.txt"
all paramers "D:\bat\1 & 2\931003 test.txt" "D:\bat\1 & 2\batchfile.bat"
There are no entries in the list.
Press any key to continue . . .
以上输出显示:
- 适用于稍微不寻常的路径和文件名,不仅包含空格,甚至包含
&
“与”字符...... - 以管理员身份工作,否则
net session
命令将返回System error 5 has occurred
错误Access is denied
消息。
答案2
您可以使用鲁纳斯命令如下:
runas /user:username program
您还可以使用类似提升,一个命令行 UAC 提升实用程序,专门用于需要管理员权限的命令:
elevate [(-c | -k) [-n] [-u]] [-w] command
Options:
-c Launches a terminating command processor; equivalent to "cmd /c command".
-k Launches a persistent command processor; equivalent to "cmd /k command".
-n When using -c or -k, do not pushd the current directory before execution.
-u When using -c or -k, use Unicode; equivalent to "cmd /u".
-w Waits for termination; equivalent to "start /wait command".