用bat檔案開啟對應的遠​​端目錄

用bat檔案開啟對應的遠​​端目錄

我需要一個常規快捷方式或位於C:\abc\00001\ 中的.bat 它應該鏈接到C:\xyz\00001\ ,其中00001 被視為相對表達式,在本例中為“當前目錄名稱” 。

目的是快速存取“姐妹資料夾”,無論資料夾名稱是00001、12734還是96185等。

理想情況下,它不會是一個 bat 文件,而是一個常規的 Windows 快捷方式,但我無法讓任何類型的 %CurrDirName% 工作。

我嘗試搜尋並想出了一些可能可以為此目的進行調整的程式碼,但我對這種類型的語法缺乏經驗。

取得目前目錄名稱(bat 檔案所在的位置;C:\abc\00001\ 應該給予 00001)

for %%* in (.) do set CurrDirName=%%~nx*

開啟對應的遠​​端目錄(C:\xyz\00001)

%SystemRoot%\explorer.exe "c:\xyz\%CurrDirName%"

有什麼需要嗎? :)

編輯:感謝@davidmneedham,我最終使用了 VBscript。這是我的最終程式碼:

Set objShell = CreateObject("Wscript.Shell")
strPath = Wscript.ScriptFullName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFSOexists = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile)
strExchangeThis = "Y:\Organization\...\" 'shortened path!
strToThis  = "Y:\Labspace\...\" 'shortened path!
strRelFolder = Replace(strFolder, strExchangeThis, strToThis)
' if strRelFolder does not exist yet, we should instead be lead to the basic strToThis folder
exists = objFSOexists.FolderExists(strRelFolder)
if Not (exists) then 
    strRelFolder = strToThis
end if
strPath = "explorer.exe /e," & strRelFolder
objShell.Run strPath
' Encoding changed from UTF-8 to ANSI to allow danish characters in strings.

答案1

CMD批次文件方法

建立此批次檔並將其放入您的C:\abc\00001\目錄中:

SET newpath=%cd:\abc\=\xyz\%
start %newpath%

如果運行此批次文件,它將C:\xyz\00001\在新視窗中開啟。放置的相同批次文件C:\xyz\00023\將開啟C:\xyz\00023\等。

%CD%是代表目前目錄的環境變數。在表示 的字串中%cd:\abc\=\xyz\%替換\abc\為。看\xyz\%cd%SS64 關於 cmd 變數替換的頁面更多細節。

VB腳本方法

以下是使用 VBScript 的相同解決方案:

Set objShell = CreateObject("Wscript.Shell")
strPath = Wscript.ScriptFullName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile)
strRelFolder = Replace(strFolder, "\abc\", "\xyz\")
strPath = "explorer.exe /e," & strRelFolder
objShell.Run strPath

相關內容