![命令行脚本问题](https://linux22.com/image/623974/%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%84%9A%E6%9C%AC%E9%97%AE%E9%A2%98.png)
几周以来,我一直在编写一个批处理文件脚本,该脚本可以自动执行我在工作期间需要执行的某些常规任务。然而,我遇到了一个问题,至今还无法解决。
我使用了一个 USB 棒,里面装有脚本和其他一些软件 (.exe)。脚本要求您以管理员模式运行,以便它可以访问某些服务,如 Windows 时间服务或 Windows 更新服务...
现在我注意到,当您以管理员模式运行脚本时,它的起始目录是 C:\Windows\System32
在此脚本中,我希望运行一个也位于该记忆棒上的程序。但是它找不到该程序。我可以写入该记忆棒上确切位置的路径。但是这行不通,因为该记忆棒在不同的计算机上使用,并且驱动器号并不总是匹配。
长话短说,我正在寻找一种方法来以管理员模式运行批处理文件(位于 USB 设备上)并让该脚本自动运行程序(也在 USB 设备上)。
提前致谢!Dempsey
PS:如果可能的话,有人能解释一下如何让脚本将所有内容记录到文本文件中吗?请记住,脚本中包含很多命令。最好将所有输出记录到文本文件中并保存在同一 USB 设备上。
答案1
将这些行添加到脚本顶部:
@setlocal enableextensions
@cd /d "%~dp0"
第一行启用环境变量,第二行是一个特殊变量,指向正在启动的脚本的当前目录。
以下是按用户细分的willx 在这个答案中:
cd -- This is change directory command.
/d -- This switch makes cd change both drive and directory at once. Without it you would have to do cd %~d0 & cd %~p0.
%~dp0 -- This can be dissected further into three parts:
%0 -- This represents zeroth parameter of your batch script. It expands into the name of the batch file itself.
%~0 -- The ~ there strips double quotes (") around the expanded argument.
%dp0 -- The d and p there are modifiers of the expansion. The d forces addition of a drive letter and the p adds full path.