Мне нужен обычный ярлык или .bat, расположенный в C:\abc\ 00001\. Он должен ссылаться на 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.