我需要一個常規快捷方式或位於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