命令行脚本问题

命令行脚本问题

几周以来,我一直在编写一个批处理文件脚本,该脚本可以自动执行我在工作期间需要执行的某些常规任务。然而,我遇到了一个问题,至今还无法解决。

我使用了一个 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.

相关内容