Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Inhalt von mehreren Unterordner kopieren und löschen mit Batch

Frage Entwicklung Batch & Shell

Mitglied: Simon-MCP

Simon-MCP (Level 1) - Jetzt verbinden

05.10.2007, aktualisiert 07.10.2007, 13432 Aufrufe, 12 Kommentare

Kurz gesagt:
Ich habe mehrere Unterordner deren Inahlt ich per Batch-Script an 2 neuen Speicherplätzen ablegen will.

Hallo,

ich benötige ein Batch-File das mir aus einem Hauptordner genannt: "Sprachen" den kompletten Inhalt der Unterordner an 2 neuen Pfaden ablegt/verschiebt. Die Dateien am alten Pfad können gelsöcht oder wie gesagt verschoben werden.
Beispiel:
:: Hauptordner ::
- DE (in diesen Unterordnern befinden sich PDF-Dateien)
- ES
- FR
Hier sollte das Script also nun hin gehen und damit anfangen, den Inhalt des Ordners "DE" an 2 neuen Pfaden a + b hin kopieren. Danach die Dateien im Ordner DE löschen und mit Ordner "ES" fortfahren usw...

Ist so etwas überhaupt möglich ?

cu
Crus
Mitglied: Netzheimer
05.10.2007 um 09:57 Uhr
Zeichen zwischen /* und */ nicht mit tippen

@echo off
xcopy Quelle Ziel1 /E /K /I /H /F
xcopy Quelle Ziel2 /E /K /I /H /F
attrib -r -a -s -h Quelle /S


/* Löschen geht dann manuell am schnellsten denke ich */


/*
für Quelle den Quellort angeben
für Ziel1 den 1. Zielort
für Ziel2 den 2. Zielort
Option /E für Unterverzeichnisse mitkopieren
Option /K für Attribute mitkopieren
Option /I für Verzeichnis erstellen, wenn es nicht existiert
Option /H für versteckte Dateien mitkopieren
Option /F für Anzeiger der zu kopierenden Dateinamen
*/
Bitte warten ..
Mitglied: Simon-MCP
05.10.2007 um 10:06 Uhr
Hallo,

vielen Dank erstmal für deine schnelle Antwort, doch ich glaub das ist nicht ganz so wie ich es brauche.

Ich möchte jeweils nur den Inhalt der Unterordner DE, ES, FR an die beiden neuen Speicherplätze abspeichern und nicht die kompletten Ordner.
Die Unterordner DE, ES, FR usw. enthalten PDF Dateien. Diese PDF Dateien sollen an Pfad A und B abgelegt werden.
Bitte warten ..
Mitglied: Netzheimer
05.10.2007 um 10:43 Uhr
cd Hauptverzeichnis/Unterverzeichnis1
copy *.pdf /V ZielordnerA

cd\
cd Hauptverzeichnis/Unterverzeichnis2

usw.

In den Leerraum dazwischen kann man del *.pdf einfügen um die Files zu löschen.
Das Attribut /V vergleicht, ob die Dateien richtig geschrieben worden sind.
Bitte warten ..
Mitglied: miniversum
05.10.2007 um 11:33 Uhr
Versuchs mal damit:
01.
set "quelle=C:\Hauptverzeichnis" 
02.
set "ziel1=C:\ziel1" 
03.
set "ziel2=C:\ziel2" 
04.
set "filefilter=*.*" 
05.
 
06.
FOR /F "delims=" %%d in (dir /B /aD %quelle%) do ( 
07.
ECHO copy /Y "%quelle%\%%d\%filefilter%" "%ziel1%"   
08.
ECHO copy /Y "%quelle%\%%d\%filefilter%" "%ziel2%"   
09.
ECHO rd /S /Q "%quelle%\%%d" 
10.
)
So sollte es gehen. Pfade müssen halt noch angepasst werden.
Es wird erstmal nur angezeigt was gemacht wird. Soll wirklich kopiert und gelöscht werden müssen die grossgeschriebenen ECHOs entfernt werden.

miniversum
Bitte warten ..
Mitglied: Simon-MCP
05.10.2007 um 11:35 Uhr
Vielen Dank für deine Hilfe.

Im Prinzip funktioniert dies. Dafür danke ich Dir auch schon mal.
Nur eins ist etwas umständlich, man muss für jedes Unterverzeinis eine Routine in der Batch-Datei anlegen.
Wenn in Zukunft ein weiteres Unterverzeichnis dazu kommen sollte, muss dieses von Hand wieder in der Batch Datei hinzugefügt werden.

Kann man das evtl. auch automatisieren ?

cu
Crus
Bitte warten ..
Mitglied: Simon-MCP
05.10.2007 um 11:41 Uhr
Hallo,

das sieht schon eher aus nach dem was ich suche. Danke schon mal für deine Mühe.

Ich habe das Script folgendermaßen abgeändert:
set "quelle=C:\Test_Orig"
set "ziel1=C:\Test_Dupli"
set "ziel2=C:\Test_Dupli2"
set "filefilter=*.txt"

FOR /F "delims=" %%d in (dir /B /aD %quelle%) do (
copy /Y "%quelle%\%%d\%filefilter%" "%ziel1%"
copy /Y "%quelle%\%%d\%filefilter%" "%ziel2%"
ECHO rd /S /Q "%quelle%\%%d"
)
Leider bekomme ich aber folgende Meldung:
Die Datei "dir" kann nicht gefunden werden.

muss ich das dir auch noch durch das Hauptverzeichniss ersetzen ?

cu
Crus
Bitte warten ..
Mitglied: bastla
05.10.2007 um 12:00 Uhr
Hallo crus-online#de!

Ersetze die Zeile
01.
FOR /F "delims=" %%d in (dir /B /aD %quelle%) do (
durch
01.
FOR /F "delims=" %%d in ('dir /B /aD "%quelle%"') do (
Grüße
bastla
Bitte warten ..
Mitglied: Simon-MCP
05.10.2007 um 12:09 Uhr
Hallo,

perfekt, vielen lieben Dank. Das funktioniert soweit nun super.

Nur noch ein kleines Problem:
Mit diesem Befehl rd /S /Q "%quelle%\%%d wird nach dem kopieren der einzelnen Dateien das komplette Unterverzeichnis gelöscht.
Ist es auch möglich nur die kopierte Datei (*.txt) zu löschen und das Unterverzeichniss bestehen zu lassen.

cu
Crus
Bitte warten ..
Mitglied: miniversum
05.10.2007 um 12:31 Uhr
Ersetze mal:
rd /S /Q "%quelle%\%%d"
durch
del "%quelle%\%%d\%filefilter%"

miniversum
Bitte warten ..
Mitglied: Biber
06.10.2007 um 23:40 Uhr
Moin crus-online#de,

ich würde die Anforderung direkt vom CMD-Prompt abfackeln ohne so viele Variablen und Heckmeck.

01.
>for /r "C:\PDFRoot\" %i in (*.pdf) do @for %j in ("copy "%i" "Ziel1"" "move %i "ziel2"") do @ECHO %~j
... und dabei
  • statt "C:\PDFRoot\" Deinen Hauptordner oberhalb "ES", "DE". "PT" etc. einsetzen
  • statt "Ziel1" und "Ziel2" deine Zielordner (die vorher schon existieren, denke ich)
  • das letzte "@ECHO" ist nur zum gefahrlosen Testen - zum Ausführen einfach weglassen.

Gruß
Biber
Bitte warten ..
Mitglied: Simon-MCP
07.10.2007 um 16:41 Uhr
Hallo Biber,

danke für deine Mühe.
Trotz allem das es eigentlich schon läuft, habe ich deine Idee auch mal versucht einzusetzen. Doch leider scheint in dem Code etwas nicht zu stimmen.

Wenn ich den Code so ausführe wie er oben steht (ohne das letzte "@ECHO") erhalte ich die folgende Meldung:
Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters
ist ungültig: %~j

Enterne ich dann das "~" for dem "j" erhalte ich folgende Meldung:
C:\Dokumente und Einstellungen\"User-Profil">for /r "C:\PDFRoot\" j in ("copy "i "zie
l2"") do @ECHO "%i" "Ziel1"" "move %i "ziel2"") do @ECHO %~j
C:\Dokumente und Einstellungen\Crusader>C:\copy.bat
"j" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Ich möchte dich damit aber auch nicht unnötig belästigen, da ich ja bereits ein funktionierendes Script erhalten habe.

Vielen Dank aber noch mal und noch einen schönen Sonntag.

cu
Crus
Bitte warten ..
Mitglied: bastla
07.10.2007 um 17:16 Uhr
Hallo crus-online#de!

Biber's Variante war für die Verwendung an der Kommandozeile, nicht in einer Batchdatei, gedacht - in Batch musst Du jeweils die %-Zeichen verdoppeln, also etwa %%~j schreiben.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst Administrator kann auf Server keine EXE-Dateien kopieren, löschen, anlegen (5)

Frage von Winfried-HH zum Thema Windows Server ...

Batch & Shell
Daten nach dem auslesen per Powershell moven - kopieren - löschen (1)

Frage von Luckyyluck zum Thema Batch & Shell ...

Exchange Server
Inhalt von Postfächern in Exchange löschen (9)

Frage von m.reeger zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...