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

505
erwi1313

Ich brauche eine normale Verknüpfung oder eine .bat-Datei, die sich in C: \ abc \ 00001 \ befindet. Die Verknüpfung sollte auf C: \ xyz \ 00001 \ verweisen, wobei 00001 als relativer Ausdruck behandelt wird, in diesem Fall "aktueller Verzeichnisname".

Ziel ist es, schnell auf einen "Schwesterordner" zuzugreifen, unabhängig davon, ob der Ordnername 00001 oder 12734 oder 96185 usw. lautet. Die eigentlichen Pfade sind in der Ordnerstruktur weit voneinander entfernt.

Im Idealfall handelt es sich nicht um eine Bat-Datei, sondern um eine normale Windows-Verknüpfung, aber ich konnte keine Art von% CurrDirName% zur Arbeit bekommen.

Ich habe versucht, zu suchen und habe etwas Code gefunden, der vielleicht für diesen Zweck angepasst werden könnte, aber ich habe wenig Erfahrung mit dieser Art von Syntax.

Abrufen des aktuellen Verzeichnisnamens (wo sich die Bat-Datei befindet; C: \ abc \ 00001 \ sollte 00001 angeben)

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

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

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

Irgendwelche nimmt? :)

EDIT: Dank @davidmneedham habe ich ein VB-Skript benutzt. 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. 
2

1 Antwort auf die Frage

0
davidmneedham

CMD-Batch-Dateimethode

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

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 C:\xyz\00023\wird geöffnet C:\xyz\00023\usw.

%CD%ist eine Umgebungsvariable, die das aktuelle Verzeichnis darstellt. %cd:\abc\=\xyz\%ersetzt \abc\durch \xyz\innerhalb der Zeichenfolge, die darstellt %cd%. Weitere Informationen finden Sie auf der SS64-Seite zum Ersetzen von cmd-Variablen .

VBScript-Methode

Das Folgende ist die gleiche Lösung, die VBScript verwendet:

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 
Hallo David, danke - das ist ein toller Start. :) Es funktioniert perfekt, wenn die Ordnerstruktur einfach ist: SET newpath =% cd: \ ERWI \ = \ ERWI2 \% start% newpath% `, aber ich stoße auf Probleme, wenn ich versuche, mich auf einen fortgeschritteneren Pfad einzustellen als Kommentar zu meiner ursprünglichen Frage hinzugefügt. Zu Beginn führt mein Versuch mit einfachen Anführungszeichen zu einem Chaos. `SET newpath =% cd:" \ ERWI \ "=" \ ERWI2 \% "` `sowie` SET newpath =% cd: "\ ERWI \" = "\ ERWI2 \"% ` erwi1313 vor 6 Jahren 0
Hallo nochmal - Entschuldigung, ich habe meinen ersten Kommentar kurz vor der Veröffentlichung entfernt. Sie haben recht - ich hatte versehentlich vergessen, Anführungszeichen zu entfernen, um mein neues Problem zu beheben. :) erwi1313 vor 6 Jahren 0
Das VBScript wurde wunderbar auf den einfachen Ordnerpfaden ausgeführt, daher werde ich versuchen, es auch für die komplexen Pfade anzupassen. Ich habe etwas mehr Erfahrung mit VBScript als Eingabeaufforderungen, also versuche ich es herauszufinden. Ich danke dir sehr!! Ich werde bei der Arbeit dafür geliebt werden !! :) erwi1313 vor 6 Jahren 0
Ja!! Ich habe alles perfekt mit dem VBscript zusammengestellt und es ist so smoooooth! Dänische Charaktere machten einen Fuzz, wurden aber durch Umstellung von UTF-8 auf ANSI gelöst. Ich habe auch ein "if FolderExists" verwendet, um zu sehen, ob der Schwesterverzeichnis schon erstellt wurde. Wenn nicht, werden Sie einfach in den "Übersichtsordner" geschickt. Vielen Dank für das Rückgrat meines Skripts! erwi1313 vor 6 Jahren 1