Command-Line-Interface

命令行腳本問題

  • January 4, 2014

幾週以來,我一直在研究批處理文件腳本,它應該可以自動執行我在工作期間需要執行的某些日常任務。但是,我偶然發現了一個我還沒有弄清楚的問題。

我正在使用帶有腳本和其他一些軟體(.exe)的 USB 記憶棒。該腳本要求您以管理員模式執行它,以便它可以訪問某些服務,例如 Windows 時間服務或 Windows 更新服務…

現在我注意到當你以管理員模式執行腳本時,它的起始目錄是 C:\Windows\System32

在這個腳本中,我希望執行一個也在棒上的程序。但是它沒有找到這個程序。我可以將路徑寫到棍子上的確切位置。但這行不通,因為該棒在不同的電腦上使用,並且驅動器號並不總是匹配。

長話短說,我正在尋找一種以管理員模式執行批處理文件(位於 USB 設備上)並讓該腳本自動執行程序(也在 USB 設備上)的方法。

提前致謝!登普西

PS:如果可能的話,有人能夠解釋我如何讓腳本將所有內容記錄到文本文件中嗎?請記住,腳本中有很多命令。將所有輸出記錄到一個文本文件並保存在同一個 USB 設備上會很好。

將這些行添加到腳本的頂部:

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

第一行啟用環境變數,第二行是一個特殊變數,它引用正在啟動的腳本的目前目錄。

這是使用者wilx 在此答案中的一個很好的細分:

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.

引用自:https://serverfault.com/questions/565012