Öffnen Sie das entsprechende Remote-Verzeichnis mit der Bat-Datei

Öffnen Sie das entsprechende Remote-Verzeichnis mit der Bat-Datei

Ich brauche eine normale Verknüpfung oder eine .bat-Datei im Verzeichnis C:\abc\00001\. Sie sollte auf C:\xyz\00001\ verweisen, wobei 00001 als relativer Ausdruck behandelt wird, in diesem Fall „aktueller Verzeichnisname“.

Ziel ist der schnelle Zugriff auf einen „Schwesterordner“, egal ob der Ordnername 00001 oder 12734 oder 96185 usw. usw. lautet. Die tatsächlichen Pfade liegen im Ordnerbaum weit voneinander entfernt.

Im Idealfall wäre es keine Bat-Datei, sondern eine normale Windows-Verknüpfung, aber ich konnte keine Art von %CurrDirName% zum Laufen bringen.

Ich habe gesucht und bin auf Code gestoßen, der vielleicht für diesen Zweck angepasst werden könnte, aber ich habe wenig Erfahrung mit dieser Art von Syntax.

Holen Sie sich den aktuellen Verzeichnisnamen (wo sich die Bat-Datei befindet; C:\abc\00001\ sollte 00001 ergeben)

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

Öffnen Sie das entsprechende Remote-Verzeichnis (C:\xyz\00001)

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

Irgendwelche Aufnahmen? :)

EDIT: Dank @davidmneedham habe ich am Ende ein VBscript verwendet. Hier ist mein endgültiger Code:

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.

Antwort1

CMD-Batchdateimethode

Erstellen Sie diese Batchdatei und platzieren Sie sie in Ihrem C:\abc\00001\Verzeichnis:

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

Wenn Sie diese Batchdatei ausführen, wird sie C:\xyz\00001\in einem neuen Fenster geöffnet. Dieselbe Batchdatei, die Sie dort platziert haben, C:\xyz\00023\wird geöffnet C:\xyz\00023\usw.

%CD%ist eine Umgebungsvariable, die das aktuelle Verzeichnis darstellt. wird durch innerhalb der Zeichenfolge %cd:\abc\=\xyz\%ersetzt , die darstellt . Siehe\abc\\xyz\%cd%SS64-Seite zum Ersetzen von Befehlsvariablenfür mehr Details.

VBScript-Methode

Nachfolgend sehen Sie die gleiche Lösung mit 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

verwandte Informationen