Mklink mit Leerzeichen in Pfadangabe funktioniert nicht
Hallo!
Ich habe leider ein neues Problem bei der Erstellung einer Batchdatei für die Hardlinkerstellung
Ausgangssituation
Es gibt diverse Vorlagen in einem gemeinsamen Verzeichnis.
MS Office will aber diese Dateien in eigenen Verzeichnissen.
Die Lösung heißt Hardlink und funktioniert im Prinzip.
Da ich nicht jedes Mal alles neu händisch erstellen oder kopieren will, habe ich eine Batchdatei erstellt.
Der code
set "hardlinkziel="c:\apps\Microsoft Office\Office12\Macros""
set "hardlinkquelle=D:\daten\vorlagen"
:rem Unterscheidung, ob Quelle ein Verzeichnis oder eine Datei ist
set "verzdat=verzeich"
:rem Bei Variablenwert filedat wird ein Hardlink für eine Datei, und bei Variablenwert verzeich wird ein Hardlink für ein Verzeichnis erstellt.
if "%verzdat%" == "filedat" D:\hardlink\mklink /H "%hardlinkziel%" "%hardlinkquelle%"
if "%verzdat%" == "verzeich" D:\hardlink\mklink /j "%hardlinkziel%" "%hardlinkquelle%"
So lange der Verzeichnispfad keine Leerzeichen beinhaltet, funktioniert alles.
Leider gibt es Probleme, wenn der Verzeichnispfad Leerzeichen beinhaltet.
Variablenwert auslesen und Verzeichnispfad mit dem Befehl mkdir erstellen funktioniert, wenn so wie bei der Variablen hardlinkziel der VVerzeichnispfad extra in Anführungszeichen gesetzt wird.
Jedoch macht der Befehl mklink Probleme.
Ich hoffe, ihr könnt mir helfen.
Danke im voraus
Gerry
Ich habe leider ein neues Problem bei der Erstellung einer Batchdatei für die Hardlinkerstellung
Ausgangssituation
Es gibt diverse Vorlagen in einem gemeinsamen Verzeichnis.
MS Office will aber diese Dateien in eigenen Verzeichnissen.
Die Lösung heißt Hardlink und funktioniert im Prinzip.
Da ich nicht jedes Mal alles neu händisch erstellen oder kopieren will, habe ich eine Batchdatei erstellt.
Der code
set "hardlinkziel="c:\apps\Microsoft Office\Office12\Macros""
set "hardlinkquelle=D:\daten\vorlagen"
:rem Unterscheidung, ob Quelle ein Verzeichnis oder eine Datei ist
set "verzdat=verzeich"
:rem Bei Variablenwert filedat wird ein Hardlink für eine Datei, und bei Variablenwert verzeich wird ein Hardlink für ein Verzeichnis erstellt.
if "%verzdat%" == "filedat" D:\hardlink\mklink /H "%hardlinkziel%" "%hardlinkquelle%"
if "%verzdat%" == "verzeich" D:\hardlink\mklink /j "%hardlinkziel%" "%hardlinkquelle%"
So lange der Verzeichnispfad keine Leerzeichen beinhaltet, funktioniert alles.
Leider gibt es Probleme, wenn der Verzeichnispfad Leerzeichen beinhaltet.
Variablenwert auslesen und Verzeichnispfad mit dem Befehl mkdir erstellen funktioniert, wenn so wie bei der Variablen hardlinkziel der VVerzeichnispfad extra in Anführungszeichen gesetzt wird.
Jedoch macht der Befehl mklink Probleme.
Ich hoffe, ihr könnt mir helfen.
Danke im voraus
Gerry
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1798322940
Url: https://administrator.de/forum/mklink-mit-leerzeichen-in-pfadangabe-funktioniert-nicht-1798322940.html
Ausgedruckt am: 21.12.2024 um 16:12 Uhr
6 Kommentare
Neuester Kommentar
Ich habe auch schon die Tilde versucht.
Nee, das funktioniert nur bei FOR variablen Ich versuche es einfach noch mal zu erklären.
set "hardlinkziel="c:\apps\Microsoft Office\Office12\Macros""
"c:\apps\Microsoft Office\Office12\Macros"
... zu, incl. der Anführunszeichen. In Zeile ...
if "%verzdat%" == "verzeich" D:\hardlink\mklink /j "%hardlinkziel%" "%hardlinkquelle%"
""c:\apps\Microsoft Office\Office12\Macros""
... mit insgesamt 4 Anführungszeichen.
Die Lösung ist einfach. Lasse sie in deiner SET Anweisung um den Pfad einfach weg.
set "hardlinkziel=c:\apps\Microsoft Office\Office12\Macros"
Steffen
Versuche Variablenwerte ohne umschließende Anführungszeichen zu erstellen. Einfach weil es einfacher ist sie bei Bedarf um die Variable zu setzen, als sie vom Wert zu entfernen falls sie stören sollten (bspw. beim Verketten von mehreren Strings).
Die Anführungszeichen in der Syntax ...
... schützen dich bei der Zuweisung ausreichend vor Sonderzeichen, wie etwa einem & im Wert.
Steffen
Die Anführungszeichen in der Syntax ...
set "varname=value"
... schützen dich bei der Zuweisung ausreichend vor Sonderzeichen, wie etwa einem & im Wert.
Steffen