我正在尝试编写一个批处理脚本,在其中我可以右键单击文件并以管理员身份运行命令提示符来运行该文件(以解决 Windows 10 对证书不足的驱动程序文件的挑剔问题)。到目前为止,它基本上可以正常工作,但我找不到最后一个问题的帮助。
剧本
set d=%DATE%
set t=%TIME%
schtasks /create /tn RunCMD /tr "cmd '%1'" /rl HIGHEST /ru <user> /rp <password> /sc once /st %t:~0,8% /sd %d:~4,10% /v1 /z
schtasks /run /tn RunCMD
pause
结果:
D:\Backup\Drivers>set d=Thu 03/10/2016
D:\Backup\Drivers>set t=12:14:24.29
D:\Backup\Drivers>schtasks /create /tn RunCMD /tr "cmd '"D:\Backup\Drivers\IS_RT2860_W7-5.0.59.0_W8-5.0.59.0_W8Blue-5.0.59.0_W10-5.0.57.0_20150909_5.0.59.0_Free.exe"'" /rl HIGHEST /ru <user> /rp <password> /sc once /st 12:14:24 /sd 03/10/2016 /v1 /z
SUCCESS: The scheduled task "RunCMD" has successfully been created.
D:\Backup\Drivers>schtasks /run /tn RunCMD
SUCCESS: Attempted to run the scheduled task "RunCMD".
D:\Backup\Drivers>pause
Press any key to continue . . .
打开一个新窗口(taskeng.exe,而不是cmd.exe,这很奇怪)并且它给我以管理员身份运行时获得的路径,但它没有任何参数。
C:\WINDOWS\system32>
如何让打开的命令提示符接受我尝试提供的参数?
答案1
搞清楚了。CMD 需要 /C 开关才能知道如何处理该参数。
set d=%DATE%
set t=%TIME%
schtasks /create /tn RunCMD /tr "cmd /C '%1'" /rl HIGHEST /ru <user> /rp <password> /sc once /st %t:~0,8% /sd %d:~4,10% /v1 /z
schtasks /run /tn RunCMD
pause