andrel
Goto Top

Xcopy und exclude

Hallo Profis,
ich habe ein Batch geschrieben und kopieren ein bestimmte Verzeichnis,
in diesen Verzeichnis möchte ich Unterverzeichnisse und Dateien ausschließen.
Das funktioniert auch.
xcopy "%copyvon%\*.*" "%Pfad%\%Verzeichnis%\%ARCHIVNAME%\" /E /exclude:g:\sicherung\batch\exclude.txt  

excude.txt
\Stage\
\Logs\
\Temp\
Hundeshop NEU (Autosicherung).mdb.zip

Besteht die Möglichkeit, die Ausschlüsse nicht in einer Datei anzugeben, sondern Batch?
Vielen Dank im voraus
Gruss André

Content-ID: 3287724130

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

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

mayho33
mayho33 24.10.2023 aktualisiert um 07:43:31 Uhr
Goto Top
Hi,

Wie wäre es mit Robocopy? Ebenfalls ein Boardmittel. Der Vorteil gegenüber XCopy ist, dass Robocopy Shadowcopy kann, bedeutet selbst files in use werden problemlos kopiert.

Die command line für exclude bei Ordnern lautet z.B.:
Robocopy "c:\ordner" "d:\ordner" /xd suordA  
oder
Robocopy "c:\ordner" "d:\ordner" /xd suordA "c:\dir 2" c:\dir3 ...  

https://learn.microsoft.com/de-de/windows-server/administration/windows- ...

https://lazyadmin.nl/it/robocopy-ultimate-guide/

https://pureinfotech.com/exclude-files-folders-robocopy-windows-10/
Penny.Cilin
Penny.Cilin 24.10.2023 um 07:43:35 Uhr
Goto Top
Warum nimmst Du nicht Robocopy?
Hier kannst Du mit Parametern steuern, was Du ausschließen willst.

Hilfe mit
Robocopy /?

Mittels der Suchfunktion findest Du viele Beiträge zum Verzeichnis kopieren.

Gruss Penny.
8585040390
8585040390 24.10.2023 aktualisiert um 09:32:36 Uhr
Goto Top
C:\>xcopy /?
...
  /EXCLUDE:file1[+file2][+file3]...
           Specifies a list of files containing strings.  Each string
           should be in a separate line in the files.  When any of the
           strings match any part of the absolute path of the file to be
           copied, that file will be excluded from being copied.  For
           example, specifying a string like \obj\ or .obj will exclude
           all files underneath the directory obj or all files with the
           .obj extension respectively.

RTFM.

Ansonsten was die Kollegen vorschlagen.

BR
emeriks
emeriks 24.10.2023 um 08:34:12 Uhr
Goto Top
Moin,
Zitat von @mayho33:
Der Vorteil gegenüber XCopy ist, dass Robocopy Shadowcopy kann,
Das wäre mir neu. Wo kann ich das nachlesen?

Was ich kenne, dass man einen VSS-Snapshot mounten und diesen dann kopieren kann. Das geht dann aber auch mit copy, xcopy, Explorer und anderen Programmen.

E.
AndreL
AndreL 24.10.2023 aktualisiert um 09:37:13 Uhr
Goto Top
Hallo Profis,
bei mir funktioniert das weder mit "xcopy" noch "robocopy"
Hab ich einen Fehler drin?
Zeile 27 & 62
@echo off
rem Erstellt von Andres Webdesign
rem Stand: 2.10.2023
chcp 65001 >nul

set copyvon=E:\SmartStore.biz Projekte\SM6\Kunden Shops\Rosemarie\Hundeshop NEU
set Pfad=g:\sicherung
set Verzeichnis=hundeshop

rem unterschiedliche Schriftfarben
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (set "DEL=%%a")    
goto :Ueberspringen
:Farben
<nul set /p ".=%DEL%" > "%~2"    
findstr /v /a:%1 /R "^$" "%~2" nul    
del "%~2" > nul 2>&1    
goto :eof
:Ueberspringen


REM Archivnamen zusammensetzen
set ARCHIVNAME=sicherung-%DATE%

REM Verzeichnis erstellen
if not exist %Pfad%\%Verzeichnis%\%ARCHIVNAME%\ (
mkdir %Pfad%\%Verzeichnis%\%ARCHIVNAME%\
xcopy "%copyvon%\*.*" "%Pfad%\%Verzeichnis%\%ARCHIVNAME%\" /E /exclude:\Logs\[+\Temp\][+\media\][+Hundeshop NEU (Autosicherung).mdb.zip]  
rem robocopy %copyvon%\*.* %folder%\ /E /Z /XD "%copyvon%\media\" "%copyvon%\Logs\" "%copyvon%\Temp\" /XF "Hundeshop NEU (Autosicherung).mdb.zip"  
cls
Call :Farben A "Die Datensicherung von %Verzeichnis% wurde erstellt und alle Daten kopiert."  
echo.&echo.
echo Drücke eine beliebige Taste, um das Programm zu beenden.
pause>nul
goto ende
) else if exist %Pfad%\%Verzeichnis%\%ARCHIVNAME%\ (
cls
Call :Farben C "Die Datensicherung von %ARCHIVNAME% exitiert bereits"   
echo.&echo.
echo ############################################################
echo # Sie können maximal 3 Sicherungskopien täglich erstellen. #
echo ############################################################
echo.&echo.
:auswahl
echo Möchten Sie eine neue Sicherheitskopie erstellen? (j / n)
SET /p wahl=
if '%wahl%' == 'n' goto Nein  
if '%wahl%' == 'j' goto Ja  
echo Sie haben eine falsche Taste gedrückt
echo.&echo.
Goto auswahl
:Ja
@echo off &setlocal enabledelayedexpansion
set root=%Pfad%\%Verzeichnis%
set prefix=%ARCHIVNAME%
set max=2
set cnt=1
set "folder=%root%\%prefix%"    
:loop
if not exist "!folder!" (    
    md "!folder!"    
rem xcopy "%copyvon%\*.*" "%Pfad%\%Verzeichnis%\%ARCHIVNAME%\" /E /exclude:g:\sicherung\batch\exclude.txt  
xcopy "%copyvon%\*.*" "%Pfad%\%Verzeichnis%\%ARCHIVNAME%\" /E /exclude:%copyvon%\Logs\[+%copyvon%\Temp\][+%copyvon%\media\][+%copyvon%Hundeshop NEU (Autosicherung).mdb.zip]  
    goto :end
) else (
    if !cnt! GTR %max% goto :end
    set "folder=%root%\%prefix%-!cnt!"    
    set /a cnt+=1
    goto :loop
)
:end
if exist "%root%\%prefix%-2" (  
Call :Farben C "Die maximale Anzahl der Sicherungskopien sind erreicht.  
echo.&echo.
echo Drücke eine beliebige Taste, um das Programm zu beenden.
pause>nul
goto :ende
) else (
goto :ende
)
:Nein
goto ende
)
:ende
exit
8585040390
8585040390 24.10.2023 aktualisiert um 09:43:10 Uhr
Goto Top
Hab ich einen Fehler drin?
Wenn das Script einen Fehler schmeißt (den Du uns verheimlichst), ja.

Zeile 27 & 62
Bau doch danach mal'n Echo ein und schau, ob der Befehl ordentlich gebaut wird. Sprich: selbst denken und debuggen, sonst ist deine Zeile 2 einfach nur frech.

rem Erstellt von Andres Webdesign
Ahja, mit (massiver) Hilfe von administrator.de - insb. Siddius, würde ich ja sagen ;)

Kudos an sich reißen ist unfreundlich, irgendwie.

Gruß
mayho33
mayho33 24.10.2023 um 09:51:16 Uhr
Goto Top
Zitat von @emeriks:

Moin,
Zitat von @mayho33:
Der Vorteil gegenüber XCopy ist, dass Robocopy Shadowcopy kann,
Das wäre mir neu. Wo kann ich das nachlesen?

Was ich kenne, dass man einen VSS-Snapshot mounten und diesen dann kopieren kann. Das geht dann aber auch mit copy, xcopy, Explorer und anderen Programmen.

E.
Etwas ungenau formuliert von mir.Mit dem Suchbetriff "Robocopy shadowcopy" brkommt man halt viele derartige Beispiele.

So wie in diesem etwas kompliziertem Beispiel wars gemeint:

https://www.andysblog.de/windows-robocopy-mit-vss-schattenkopie
emeriks
emeriks 24.10.2023 um 10:08:38 Uhr
Goto Top
@mayho33
Ja, ok. Das sagt aber nun nicht aus, dass Robocopy VSS können würde und Xcopy nicht.
Kraemer
Kraemer 24.10.2023 um 10:20:14 Uhr
Goto Top
Moin,

du solltest dich dringend mal in das Jahr 2023 beamen. Sowas macht man nicht mehr mit Batch. Befass dich mit der Powershell. Dann hast du auch gleich ein Werkezug an der Hand, welches auf Windows und Linux zur Verfügung steht.

/exclude:\Logs\[+\Temp\][+\media\][+Hundeshop NEU (Autosicherung).mdb.zip]  

Hier kann man nur vermuten, dass du noch nie eine CMD-Hilfe gelesen hast. In eckige Klammern werden optionale Werte angegeben - diese haben in einem Befehl überhaupt nichts zu suchen. Und die Pfanangaben sind imho unvollständig.

Gruß
kpunkt
kpunkt 24.10.2023 um 10:21:21 Uhr
Goto Top
Nutz robocopy und den Schalter /xd und häng die Verzeichnisse einfach mit Leerzeichen getrennt dahinter.
/xd "Verzeichnis1" "Verzeichnis2" ....
AndreL
AndreL 25.10.2023 aktualisiert um 06:40:48 Uhr
Goto Top
Hallo Profis,
vielen Dank an alle für die Hilfe.
Habe es mit robocopy hinbekommen.
Gruss André