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-ID: 12941230132

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

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

Meierjo
Lösung Meierjo 12.10.2023 um 06:09:05 Uhr
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
AndreL
AndreL 15.10.2023 um 11:03:48 Uhr
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
Meierjo
Meierjo 15.10.2023 um 14:08:12 Uhr
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
AndreL
AndreL 15.10.2023 aktualisiert um 16:18:16 Uhr
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é
7907292512
Lösung 7907292512 15.10.2023 aktualisiert um 16:25:16 Uhr
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.
AndreL
AndreL 15.10.2023 um 17:48:29 Uhr
Goto Top
Hallo sid,
das war es, vielen Dank
Gruss André