Otwórz odpowiedni zdalny katalog z plikiem bat

2

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.
erwi1313
źródło

Odpowiedzi:

0

Metoda pliku wsadowego CMD

Utwórz ten plik wsadowy i umieść go w C:\abc\00001\katalogu:

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

Jeśli uruchomisz ten plik wsadowy, otworzy się C:\xyz\00001\w nowym oknie. Ten sam plik wsadowy umieszczony w C:\xyz\00023\otworzy się C:\xyz\00023\itp.

%CD%to zmienna środowiskowa reprezentująca bieżący katalog. %cd:\abc\=\xyz\%zastępuje \abc\się \xyz\w ciąg, który reprezentuje %cd%. Aby uzyskać więcej informacji, zobacz stronę SS64 dotyczącą zastępowania zmiennych cmd .

Metoda VBScript

Poniżej przedstawiono to samo rozwiązanie przy użyciu 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
davidmneedham
źródło
Cześć David, dziękuję - to świetny początek. :) Działa idealnie, gdy struktura folderów jest prosta 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 to SET newpath=%cd:"\ERWI\"="\ERWI2\%"SET newpath=%cd:"\ERWI\"="\ERWI2\"%
popsuła
Witam ponownie - przepraszam, że usunąłem swój pierwszy komentarz tuż przed opublikowaniem. Masz rację - przez pomyłkę zapomniałem usunąć znaki cudzysłowu, próbując naprawić mój nowy problem. :)
erwi1313,
VBScript działał wspaniale na prostych ścieżkach folderów, więc spróbuję go dostosować również do ścieżek złożonych. Mam nieco więcej doświadczenia z VBScript niż z wierszami poleceń, więc spróbuję to rozgryźć. Dziękuję bardzo!! Będę kochany za to w pracy !! :)
erwi1313
1
Tak!! Mam wszystko do perfekcyjnej pracy z VBscript i to jest takie fajne! Duńskie postacie zrobiły zamieszanie, ale problem został rozwiązany przez zmianę z UTF-8 na ANSI. Użyłem również „if FolderExists”, aby sprawdzić, czy folder siostrzany został jeszcze utworzony. Jeśli nie, zostaniesz wysłany do „folderu przeglądu”. Dziękuję bardzo za kręgosłup mojego skryptu !!
erwi1313,