Potrzebuję zwykłego skrótu lub pliku .bat znajdującego się w C: \ abc \ 00001 \ Powinien on zawierać link do C: \ xyz \ 00001 \, gdzie 00001 jest traktowany jako wyrażenie względne, w tym przypadku „bieżąca nazwa katalogu”.
Celem jest szybki dostęp do „folderu siostrzanego”, niezależnie od tego, czy nazwa folderu to 00001, 12734, 96185 itd. Itd. Rzeczywiste ścieżki będą znajdować się daleko od siebie w drzewie folderów.
Idealnie nie byłby to plik nietoperza, ale zwykły skrót do systemu Windows, ale nie mogłem uruchomić żadnego rodzaju% CurrDirName%.
Próbowałem wyszukać i wpadłem na kod, który może być dostosowany do tego celu, ale mam niewielkie doświadczenie z tego typu składnią ..
Uzyskaj nazwę bieżącego katalogu (gdzie znajduje się plik nietoperza; C: \ abc \ 00001 \ powinien dać 00001)
for %%* in (.) do set CurrDirName=%%~nx*
Otwórz odpowiedni katalog zdalny (C: \ xyz \ 00001)
%SystemRoot%\explorer.exe "c:\xyz\%CurrDirName%"
Jakieś ujęcia? :)
EDYCJA: Dzięki @davidmneedham skończyłem używać VBscript. Oto mój końcowy kod:
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.
źródło
SET newpath=%cd:\ERWI\=\ERWI2\% start %newpath%
, ale mam problemy podczas próby dostosowania się do bardziej zaawansowanej ścieżki, jak właśnie dodałem jako komentarz do mojego pierwotnego pytania. Na początek moja próba wprowadzenia prostych podwójnych cudzysłowów toSET newpath=%cd:"\ERWI\"="\ERWI2\%"
SET newpath=%cd:"\ERWI\"="\ERWI2\"%