【发布时间】:2017-11-24 08:13:32
【问题描述】:
我目前正在为一所学校编写代码,允许学生以管理员身份在其 Windows 设备上简单地运行批处理文件,并接收使用网络基础设施所需的程序。
@echo Welcome to the Mossman State High School Additional Features Installer
@pause
@echo Starting the Credentials GUI
@echo Starting PaperCut Installer
@start "" %~dp0BYOx.exe
@start "" %~dp0client-local-install.exe
@echo Creating Printing Directory
@md C:\Printing
@echo Copying Print Mapping Files
@copy "" %~dp0configuration.xml C:\Printing /E /W
@copy "" %~dp0student_printers.xml C:\Printing /E /W
@copy "" %~dp0PrintMap2.exe C:\Printing /E /W
@copy "" %~dp0StudentPrinting.sfx.exe C:\ /E /W
@echo Running Connect Printer Setup
@start "C:\" StudentPrinting.sfx.exe
@echo Please complete the instructions on BYOx and PaperCut to finilize
onboarding.
@pause
由于StudentPrinting.sfx.exe程序之前的编写方式,需要从C:\目录运行,所以需要以管理员身份运行。
我最初发现%~dp0 参数有效,但是一旦进行了进一步的测试,我发现它一旦击中带有空格的计算机名称就会失败,例如。 C:\Users\ComputerOne\Desktop\Auto_Installer 有效,但 C:\Users\Computer One\Desktop\Auto_Installer 不是由于计算机和 One 之间的空间。由于它将由 12 至 18 岁的学生使用,因此他们无法解决此问题。
有没有办法让批处理文件以管理员身份运行,但仍从它所在的目录运行?
【问题讨论】:
-
如果您不介意这个问题:为什么在每一行都使用
@command而不是在开头使用@echo off? -
请查看
START和COPY命令的正确语法。您还会发现浏览SS64's CMD.EXE reference 会非常有用。
标签: windows batch-file cmd administrator