meisterigel
Goto Top

backup Batch Pfad hat Leerzeichen

wie kann ich einen Pfad in einer Batchdatei änder

Hallo

ich habe ein kleines Backuptool gebaut welches aus einer Externen Datei die zu sichernden Pfade ausliest und dann nacheinander abarbeitet das geht auch alles solange gut bis ein Pfad mit einem Leerzeichen kommt.
nun meine Frage gibt es eine Möglichkeit den Pfad von z.B.: C:\Dokumente und Einstellungen\ich\Application Data\Microsoft automatisch in
C:\Dokume~1\Herzberg\Applic~1\Microsoft umzuwandeln wenn ja wie soll das gehen.

set ziel="c:\SICHERUNG\"  

REM ---Der Ort der Quelldatei wird aus der quellen.txt glesen

FOR /f "delims=" %%f IN (quellen.txt) DO call :loop "%%f"  
goto ende

ANGEBEN!!!-----------------------------------------------------------------------

:loop 
set von="%~1"  
set ordner="%~1"  
set ordner=%ordner::=%




REM --------------------------------------- Ausgeben der Befehlsliste 
REM --------------------------------------- Name des Sicherungsordner wird erstellt 
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
set datum=%tag%.%monat%.%jahr%
set nach="%ziel%%datum%\%ordner%\"  


REM --------------------------------------- Logdatei wird geschrieben 
echo Starte Datensicherung am %datum% um %time% von %von% nach %nach% >>%windir%\backup.log >>%ziel%\backup.log


REM --------------------------------------- Daten werden Kopiert 
xcopy %von% %nach% /S /E /C /H /O /R /Y /D /V
[Edit 15.06.2007 11:44]
Ich habe mir erlaubt, den Batchschnipsel in einen Codeblock zu setzen. Danke...

Dani
(Moderator)

Content-Key: 61442

Url: https://administrator.de/contentid/61442

Printed on: April 19, 2024 at 21:04 o'clock

Member: bastla
bastla Jun 15, 2007 at 09:44:57 (UTC)
Goto Top
Hallo meisterigel!

gibt es eine Möglichkeit den Pfad von z.B.: C:\Dokumente und Einstellungen\ich\Application Data\Microsoft automatisch in C:\Dokume~1\Herzberg\Applic~1\Microsoft umzuwandeln wenn ja wie soll das gehen.

Versuch es mit
set "von=%~s1"  
Siehe dazu auch "for /?"

Grüße
bastla
Member: meisterigel
meisterigel Jun 15, 2007 at 10:24:46 (UTC)
Goto Top
das geht so nicht
kann ich das nicht so wie mit den Doppelpunkte im Pfad machen die kann ich ja auch löschen.
Ich möchte ja nur das nach jedem backslash und dem sechsten Zeichen ein ~1 steht
muss doch gehen

PS.: die Hilfe habe ich schon gelesen
Member: bastla
bastla Jun 15, 2007 at 11:42:26 (UTC)
Goto Top
Hallo meisterigel!

Um das zu verifizieren:

In Deiner "quellen.txt" steht der existierende Pfad "C:\Dokumente und Einstellungen\Herzberg\Application Data\Microsoft". In Deinem Batch hast Du set von="%~1" durch set "von=%~s1" ersetzt, also etwa so:
FOR /f "delims=" %%f IN (quellen.txt) DO call :loop "%%f"  
goto ende

:loop 
set "von=%~s1"  
echo %von%
(das echo nur zur sofortigen Kontrolle).

Du bekommst damit nicht den ShortName?

Grüße
bastla
Member: bastla
bastla Jun 15, 2007 at 12:04:13 (UTC)
Goto Top
... aber vielleicht gleich auch ein Alternativvorschlag:
@echo off & setlocal
set "ziel=c:\SICHERUNG"  
FOR /f "delims=" %%f IN (quellen.txt) DO call :loop "%%f"  
goto :eof
:loop
set "von=%~1"  
set "ordner=%von::=%"  
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
set datum=%tag%.%monat%.%jahr%
set "nach=%ziel%\%datum%\%ordner%"  
echo xcopy "%von%" "%nach%\" /S /E /C /H /O /R /Y /D /V  
Das echo steht zum Testen drinnen.

Geändert habe ich insbesondere das Setzen der Anführungszeichen sowie die Verwendung der "\", etwa zwischen %ziel% und %datum%. (Sinnvoller fände ich übrigens ein Datum der Art %jahr%-%monat%-%tag%.)

Grüße
bastla