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

Batch Datei zum kopieren von Dateien

Frage Entwicklung Batch & Shell

Mitglied: Stebbone

Stebbone (Level 1) - Jetzt verbinden

24.07.2009, aktualisiert 18.10.2012, 5148 Aufrufe, 12 Kommentare

Ich komme bei diesem Prog. nicht weiter

Hallo liebe Profis =) ich bemüh mich eine Batch datei zu erstellen, welche Dateien in ein Archiv Verz. packt, das Erstellungsdatum an den Dateinamen anknüpft und sie anschließend in den richtigen "Monats" Ordner verschiebt.

Bsp.

in der Daten Quelle liegt folgende Datei: IAGEIS.123 diese kopiere ich in einen Archiv Ordner, daraus wird dann IAGEIS_2009.03.11.123
es wird also das Erstellungsdatum der Datei angehängt.
Ist dies getan, dann sollte die IAGEIS_2009.03.11.123 Datei noch in den richtigen Ordner verschoben werden.
Es sollten Ordner angelegt werden, für jeden Monat im Jahr, dabei sollte das Prog. auf das Erstelldatum der Datei achten und zB einen Ordner 200911 erstellen (jjjjmm) und alle Daten mit dem selben Monat dort hinein verschieben.

Ich bin bereits soweit, dass es das Erstelldatum an die Datei anhängt wird, jedoch nicht wie gewünscht, sondern im format : tt.mm.jjjj könnte mir viell. jmd. weiterhelfen wie ich dies in jjjj.mm.tt umschreibe? Und wie man die zugehörigen Ordner erstellt und die Dateien reinkopiert. Wär echt sehr nett.
Das ganze dient einer Archivierung, falls diese Angabe notwendig ist.

Hier mein Bisheriger Quellcode:
01.
@echo off & setlocal 
02.
set "Quelle=C:\SUBELKE\WIN-DFUE\EMPFANG.ARC" 
03.
set "Archiv=C:\SUBELKE\WIN-DFUE\ARCHIV\EMPFANG.ARC" 
04.
 
05.
if not exist "%Archiv%" md "%Archiv%" 
06.
for /f "skip=5 tokens=1,3*" %%i in ('dir /a-d /tw "%Quelle%\*.*"^|findstr /v "Datei(en) Verzeichnis(se),"') do copy "%Quelle%\%%k" "%Archiv%\%%~nk_%%i%%~xk">nul 
07.
 
08.
 
09.
set "Quelle2=C:\SUBELKE\WIN-DFUE\EMPFANG.HDR" 
10.
set "Archiv2=C:\SUBELKE\WIN-DFUE\ARCHIV\EMPFANG.HDR" 
11.
 
12.
if not exist "%Archiv2%" md "%Archiv2%" 
13.
for /f "skip=5 tokens=1,3*" %%i in ('dir /a-d /tw "%Quelle2%\*.*"^|findstr /v "Datei(en) Verzeichnis(se),"') do copy "%Quelle2%\%%k" "%Archiv2%\%%~nk_%%i%%~xk">nul
Es gibt um genauer zu sein 2 Quellordner
Komm echt nicht weiter und bin für jede Hilfe dankbar!
Vielen dank im Vorraus

Mit freundlichen Grüßen Stebbo


[Edit Biber] Code in Code-Tags gesetzt. [/Edit]
Mitglied: 60730
24.07.2009 um 09:54 Uhr
Servus,

schau dir dazu mal Bibers Anleitung Datum in Batch an.

Wobei ich dir zusätzlich empfehlen würde mit 7zip zu arbeiten, damit kriegst du fast jedes Archiv schön klein. (jpg/mp3 mal ausgeschlossen)

Gruß

edit:

jau nun hab ichs ganz gelesen und auch verstanden...
Bibers Anleitung ist das, was du suchst
Bitte warten ..
Mitglied: Stebbone
24.07.2009 um 10:04 Uhr
Vielen Dank für deine Antwort.

Die Anleitung ist ziemlich umfangreich wenn ich die gleiche mein wie du...mal schauen ob sie mir weiterhilft.
Ich darf leider ausschließlich mit cmd also mit der Eingabeaufforderung arbeiten. Und auf dem PC sind noch andere Anwendungen, welche mit Deutschem Datum arbeiten müssen, ich denke um dies anderst zu verwirklichen ist keine allzu große änderung in meinem Quelltext (siehe oben) notwendig. Habe schon einiges ausprobiert aber klappt warum auch immer bei mir nicht. Bin auch nicht wirklich gut darin.
Mit den Ordnern denke ich mir viell. dass ich das Datum auslese das jahr & Monat an eine VAriable übergebe %%~nI oder so und dann durch diese ein Ordner erstelle in einer FOR-Schleife oder so...hmmm aber mir fehlt dazu einfach das Wissen, kenne nur Grundbefehle, leider, viell. ändert sich dies ja durch Beiträge von euch =)
Bitte warten ..
Mitglied: Iwan
24.07.2009, aktualisiert 18.10.2012
hallo,

für das Umstellen des Datums hab ich hier im Forum eine Lösung gefunden und etwas verändert:
01.
for /f "tokens=1-4 delims=." %%i in ("%date%") do set "D=%%i" & set "M=%%j" & set "Y=%%k"
Ergebnis für 24.07.2009 = "D=24" & "M=07" &"Y=2009"
diese Variablen kannst du ja dann auch dafür nutzen, die Datei in den richtigen Ordner zu verschieben:
01.
REN IAGEIS.123 IAGEIS_%Y%.%M%.%D%.123 
02.
xcopy /v IAGEIS_%Y%.%M%.%D%.123 D:\%Y%\%M%\%D%\ 
Ergebnis wäre:
Datei "IAGEIS.123" wurde umbenannt in "IAGEIS_2009.07.24.123"
Datei wurde kopiert nach: D:\2009\07\24

hoffe das hilft
Bitte warten ..
Mitglied: Stebbone
24.07.2009 um 10:15 Uhr
Dankeschön, soweit schon, muss dies noch an meinen vorhandenen Quellcode anpassen & ein weiteres Problem ist, dass die DAteien ja nicht alle IAGEIS.123 heißen, sie bestehen aus beliebihvielezeichen.3zeichen , also als endung.
Und es soll ja nicht das Aktuelle Datum sondern das Erstelldatum der Datei angehängt werden.
Bin weiterhin am Testen
Bitte warten ..
Mitglied: Stebbone
24.07.2009 um 10:31 Uhr
Wäre es möglich, dass ihr eure Ideen an meinen Quelltext oben anpasst, weil ich damit immer sehr probleme hab oder ihn so umschreibt wie ihr es meint. Hoff dass ich mir nicht zuviel von euch erwarte....Danke =)
Bitte warten ..
Mitglied: 60730
24.07.2009 um 11:46 Uhr
Servus,

um dein Problem 1zu1 umzusetzen und das auch noch schön - brauchst einen der beiden Bs aus diesem Bereich.

Wobei es natürlich auch gefrickelt geht. - Aber im "B" Bereich frickelt es sich so schwer

wobei frickeln in meinen Augen bedeuten würde - erzeuge eine 2. Liste und anhand derer dann die "Zahlen" umdrehen und erst dann kopieren

Mit der obigen Abfrage hast du doch Dateiname und Erstellungsdatum.

Von daher wäre ein Lauf immer und immer wieder nicht notwendig - bzw sinnbefreit, wenn er öfters läuft und jemand zwischenzeitlich die datei geändert hätte - denn du fragst ja erstell nicht Änderungsdatum ab.

Von daher - denk bitte nochmal nach, ob dein Ziel wirklich den gewünschten Erfolg bietet.

Gruß
Bitte warten ..
Mitglied: Stebbone
24.07.2009 um 11:55 Uhr
Die Dateien kommen automatisiert übers Netzwerk in den PC. Es wird sicherlich niemand die DAteien ändern. Es kommen jeden Tag neue dazu und mit der Batch würde ich einfach gerne erreichen dass diese in den entsprechenden Ordner archiviert werden. Und ebenso der jeweilige Jahres&Monats Ordner (zur Übersicht) erstellt werden sollte. dass die bereits kopierten dateien nicht nochmal kopiert werden werde ich zum schluss anderst realisieren viell. das archiv Bit checken oder so. Ich verstehe nicht ganz was du mit "B" Bereich meinst.
Ein anderer lösungsweg wäre viell. eine .log datei zu erzeugen:
viell: dir /b *_*>Files.log
so aber ich weiß nicht genau wie das alles funktioniert...hmmm
Bitte warten ..
Mitglied: 60730
24.07.2009, aktualisiert 18.10.2012
Zitat von Stebbone:
Ich verstehe nicht ganz was du mit "B" Bereich meinst.
">Batch und Shell Moderator Biber - Chefschleifenschreiber Bastla

und yupp -das Archiv bit wäre auch mein nächster Kandidat gewesen, wenn es "so" laufen muß.

Aber nochmal - ich mach das alles mit 7zip - da lege ich mir Erstelldatum des Zip-originalPfad.zip an und dort sind dann die Dateien drin.

guckst du

Gruß
Bitte warten ..
Mitglied: rubberman
24.07.2009 um 12:51 Uhr
Würde etwa so an die Sache ran gehen: (Ungetestet!)
01.
@echo off & setlocal 
02.
set "Quelle=C:\SUBELKE\WIN-DFUE\EMPFANG.ARC" 
03.
set "Archiv=C:\SUBELKE\WIN-DFUE\ARCHIV\EMPFANG.ARC" 
04.
 
05.
if not exist "%Archiv%" md "%Archiv%" 
06.
pushd "%Quelle%" 
07.
for /f "skip=5 tokens=1,3*" %%i in ('dir /a-d /tc *.*^|findstr /b /c:" " /v') do set "Xdate=%%i" &set "Xnameext=%%k" &set "Xname=%%~nk" &set "Xext=%%~xk" &call :sub 
08.
popd 
09.
 
10.
 
11.
set "Quelle=C:\SUBELKE\WIN-DFUE\EMPFANG.HDR" 
12.
set "Archiv=C:\SUBELKE\WIN-DFUE\ARCHIV\EMPFANG.HDR" 
13.
 
14.
if not exist "%Archiv%" md "%Archiv%" 
15.
pushd "%Quelle%" 
16.
for /f "skip=5 tokens=1,3*" %%i in ('dir /a-d /tc *.*^|findstr /b /c:" " /v') do set "Xdate=%%i" &set "Xnameext=%%k" &set "Xname=%%~nk" &set "Xext=%%~xk" &call :sub 
17.
popd 
18.
 
19.
pause 
20.
goto :eof 
21.
 
22.
:sub 
23.
set "tt=%Xdate:~0,2%" 
24.
set "mm=%Xdate:~3,2%" 
25.
set "jjjj=%Xdate:~-4%" 
26.
if not exist "%Archiv%\%jjjj%%mm%" md "%Archiv%\%jjjj%%mm%" 
27.
copy "%Quelle%\%Xnameext%" "%Archiv%\%jjjj%%mm%\%Xname%_%jjjj%.%mm%.%tt%%Xext%">nul 
28.
goto :eof
Behalte die Variablennamen Quelle und Archiv bei, um die Subroutine für beide Verzeichnisse zu nutzen. Übrigens: Erstellungsdatum mit Parameter /tc !

<edit> überflüssige "do"s und Apostrophe entfernt </edit>
Bitte warten ..
Mitglied: Stebbone
24.07.2009 um 13:02 Uhr
wow sieht ja schon einmal ganz gut aus, vielen Dank, jedoch bringt er ein fehler bei dem do Befehl, werde dies versuchen zu lösen...
Bitte warten ..
Mitglied: rubberman
24.07.2009 um 13:34 Uhr
Ein Apostroph zu viel, ich ändere oben.
Bitte warten ..
Mitglied: Stebbone
27.07.2009 um 08:28 Uhr
Das ist genau das was ich gesucht habe, vielen Dank hat mir sehr weitergeholfen! Gruß Stebbone
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Ordner per Batch verschieben, Datei kopieren (2)

Frage von Shape.Shifter zum Thema Batch & Shell ...

Batch & Shell
Batch: Word Datei kopieren und umbennen (9)

Frage von ExcelNoob177 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...