命令行脚本问题

命令行脚本问题

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

我使用了一个 USB 棒,里面装有脚本和其他一些软件 (.exe)。脚本要求您以管理员模式运行,以便它可以访问某些服务,如 Windows 时间服务或 Windows 更新服务...

现在我注意到,当您以管理员模式运行脚本时,它的起始目录是 C:\Windows\System32

在此脚本中,我希望运行一个也位于该记忆棒上的程序。但是它找不到该程序。我可以写入该记忆棒上确切位置的路径。但是这行不通,因为该记忆棒在不同的计算机上使用,并且驱动器号并不总是匹配。

长话短说,我正在寻找一种方法来以管理员模式运行批处理文件(位于 USB 设备上)并让该脚本自动运行程序(也在 USB 设备上)。

提前致谢!Dempsey

PS:如果可能的话,有人能解释一下如何让脚本将所有内容记录到文本文件中吗?请记住,脚本中包含很多命令。最好将所有输出记录到文本文件中并保存在同一 USB 设备上。

答案1

将这些行添加到脚本顶部:

@setlocal enableextensions @cd /d "%~dp0"

第一行启用环境变量,第二行是一个特殊变量,指向正在启动的脚本的当前目录。

以下是用户 wilx 在这个回答中的详细分析:

cd -- 这是更改目录命令。/d -- 此开关使 cd 可以同时更改驱动器和目录。如果没有它,则必须执行 cd %~d0 & cd %~p0。%~dp0 -- 这可以进一步分为三个部分:%0 -- 这表示批处理脚本的第零个参数。它扩展为批处理文件本身的名称。%~0 -- 这里的 ~ 删除扩展参数周围的双引号 (")。%dp0 -- 这里的 d 和 p 是扩展的修饰符。d 强制添加驱动器号,p 添加完整路径。

答案2

要记录批处理文件的详细信息,请使用运算符“>”。例如,如果您的批处理文件名为 abc.bat,而所需的日志文件为 log.txt。然后尝试以下操作:

abc.bat > 日志.txt

这将在执行批处理的同一目录中创建一个名为 log.txt 的新日志文件。

相关内容