andrel
Goto Top

Ordner kopieren - variable

Hallo Profis,
ich möchte den Inhalt eines Ordners in ein zuvor erstellten Ordner kopieren.
Den Ordner erstelle ich per Batch.
REM Aktuelle Zeit holen und Doppelpunkte durch Punkte ersetzen
set CURRENTTIME=%TIME::=.%
REM Nur erste 8 Zeichen der Zeit verwenden: HH.MM.SS
set CURRENTTIME=%CURRENTTIME:~0,8%
REM Archivnamen zusammensetzen
set ARCHIVNAME=archiv-%DATE%-%CURRENTTIME%
REM Verzeichnis erstellen
mkdir cd g:\sicherung\%ARCHIVNAME%


Der Ordner wurde erstellt.

Nun möchte ich den Inhalt des Ordners, in den erstellten Ordner kopieren.
Habe es mit diesem Code probiert:
copy E:\SmartStore.biz Projekte\SM6\Kunden Shops\Rosemarie\Hundeshop NEU\*.* g:\sicherung\%ARCHIVNAME%

Das Verzeichnis wird erstellt, aber die Dateien und Verzeichnisse werden werden nicht in den Ordner kopiert.
Was mache ich falsch?
Gruss André

Content-Key: 12941230132

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

Printed on: July 17, 2024 at 19:07 o'clock

Member: Meierjo
Solution Meierjo Oct 12, 2023 at 04:09:05 (UTC)
Goto Top
Hallo und guten morgen

Du musst den Quellpfad in Anführungszeichen setzen, wegen den Leerzeichen im Pfad

copy "E:\SmartStore.biz Projekte\SM6\Kunden Shops\Rosemarie\Hundeshop NEU\*.*" g:\sicherung\%ARCHIVNAME%  

Gruss
Member: AndreL
AndreL Oct 15, 2023 at 09:03:48 (UTC)
Goto Top
Hallo Meierjo,
vielen Dank das hat funktioniert.

Mein Script sieht jetzt so aus,
wenn ich das Script laufen lasse, wird das kopieren der Daten ausgeführt,
obwohl das Verzeichnis existiert.
Wenn das Verzeichnis schon vorhanden ist soll das Script beendet werden, ohne das daten kopiert werden.
Wo liegt mein Fehler?
Vielen Dank im voraus.

REM Aktuelle Zeit holen und Doppelpunkte durch Punkte ersetzen
set CURRENTTIME=%TIME::=.%

REM Nur erste 8 Zeichen der Zeit verwenden: HH.MM.SS
set CURRENTTIME=%CURRENTTIME:~0,0%

REM Archivnamen zusammensetzen
set ARCHIVNAME=sicherung-%DATE%
rem -%CURRENTTIME%

REM Verzeichnis erstellen
if not exist %ARCHIVNAME% (
mkdir g:\sicherung\%ARCHIVNAME%
echo %ARCHIVNAME%
xcopy "E:\SmartStore.biz Projekte\SM6\Kunden Shops\Rosemarie\Hundeshop NEU\*.*" "g:\sicherung\%ARCHIVNAME%" /E /exclude:g:\sicherung\batch\exclude.txt  



) else if exist %ARCHIVNAME% (
goto ende	
)
pause
:ende
Member: Meierjo
Meierjo Oct 15, 2023 at 12:08:12 (UTC)
Goto Top
Hallo

Ich denk, du musst %ARCHIVNAME% mit einem Backslash abschliessen, um das Vorhandensein eines Ordner zu prüfen
https://stackoverflow.com/questions/23735282/if-not-exist-command-in-bat ...
Kanns aber hier grade nicht testen

Gruss
Member: AndreL
AndreL Oct 15, 2023 updated at 14:18:16 (UTC)
Goto Top
Hallo Meierjo,
will leider auch nicht.
REM Aktuelle Zeit holen und Doppelpunkte durch Punkte ersetzen
set CURRENTTIME=%TIME::=.%

REM Nur erste 8 Zeichen der Zeit verwenden: HH.MM.SS
set CURRENTTIME=%CURRENTTIME:~0,0%

REM Archivnamen zusammensetzen
set ARCHIVNAME=sicherung-%DATE%
rem -%CURRENTTIME%

REM Verzeichnis erstellen
if not exist %ARCHIVNAME%\ (
mkdir g:\sicherung\%ARCHIVNAME%\
echo %ARCHIVNAME%\
xcopy "E:\SmartStore.biz Projekte\SM6\Kunden Shops\Rosemarie\Hundeshop NEU\*.*" "g:\sicherung\%ARCHIVNAME%\" /E /exclude:g:\sicherung\batch\exclude.txt  



) else if exist %ARCHIVNAME%\ (
goto ende	
)
pause
:ende
Gruss André
Mitglied: 7907292512
Solution 7907292512 Oct 15, 2023 updated at 14:25:16 (UTC)
Goto Top
Da fehlt der absolute Pfad zum Ordner in der IF-Prüfung ...
:: ...
:: ..
if not exist "G:\Sicherung\%ARCHIVNAME%" (  
    md "G:\Sicherung\%ARCHIVNAME%"  
    echo %ARCHIVNAME%
    xcopy "E:\SmartStore.biz Projekte\SM6\Kunden Shops\Rosemarie\Hundeshop NEU\*.*" "g:\sicherung\%ARCHIVNAME%\" /E /exclude:g:\sicherung\batch\exclude.txt    
)

Gruß sid.
Member: AndreL
AndreL Oct 15, 2023 at 15:48:29 (UTC)
Goto Top
Hallo sid,
das war es, vielen Dank
Gruss André