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

Batch Datei soll aus Datum eines Dateinamen ein Ordner-Archiv erstellen

Frage Entwicklung

Mitglied: KetschupMajo

KetschupMajo (Level 1) - Jetzt verbinden

24.02.2012, aktualisiert 10:07 Uhr, 3812 Aufrufe, 15 Kommentare

Hallo Forumwelt,
wie ich im Titel schon erwähnt habe, bin ich gerade wieder im .bat Fieber.
Da ich aber noch nie so tief im Batch-Datei-Schreiben drin war hoffe ich auf kleine Hilfe.

Meine Aufgabe ist aus einem Dateinamen einer PDF Datei ein Archiv aufzubauen.
Der Dateiname baut sich wie folgt auf: 0000_240212_0000_00000_0000.pdf
Die Nullen sind sich ändernde Elemente die Zahlen sind das Datum. (Also heutiges Datum der 24. Feburar 2012)

Am allerbesten wäre es jetzt wenn ich es hinbekommen würde wenn die Batch den Dateinamen zerlegen, und anhand es zweiten "Blocks" das Datum auslesen kann.
Anschließend soll eine Ordnerstruktur anlegt werden, bzw.sollte die Batch checken ob eine andere Datei vorher schon den Ordner angelegt hat. (if Befehl)

Das Archiv würde ich mir wie folgt vorstellen

Archiv
------Jahr
---------Monat
------------Tag

Wie gehe ich da am besten vor...?


Vielen Dank schonmal für die Hilfe...
Mitglied: Skyemugen
24.02.2012 um 10:44 Uhr
Aloha,

du möchtest es also alleine lösen?

In Ordnung, dann hier die Tipps:

Tutorial zur FOR-Schleife

du benötigst eine for /f mit _ als Trennzeichen, die den 2. Block als Variable setzt, dazu setzt du dann am Ende einfach mkdir Archiv\%Variable:~-2%\%Variable:~2,2%\%Variable:~0,2%

greetz André
Bitte warten ..
Mitglied: KetschupMajo
24.02.2012 um 11:51 Uhr
Danke - ich hab nicht genau gewusst wie ich an das ganzer erstmal rangehe... versuche mal was und poste dann mal wie weit ich komme... DANKE schonmal
Bitte warten ..
Mitglied: bastla
24.02.2012 um 13:02 Uhr
@skye
Einen Hinweis auf delayedEpansion könntest Du noch spendieren ...

Grüße
bastla
Bitte warten ..
Mitglied: KetschupMajo
26.02.2012 um 18:02 Uhr
For /R C:\.......\Eingang\*.pdf %i IN (*.pdf) DO mkdir C:\.......\Archiv\%i:~-2%\%i:~2,2%\%i:~0,2%

soweit komme ich schonmal... könntet Ihr mir noch nen kurzen Tipp geben...?
Jetzt setzt er glaub ich soweit ich das Verstanden habe den kompletten Dateinamen als Variable, oder? wie mache ich das jetzt dass er nur den zweiten Block nimmt... ?

Muss ich da jetzt noch Tokens einbauen? -> FOR /F "tokens=2 delims=_"
An welche Stelle und müssen Tokens ins "Klammern" oder in `diesen Dingern´ stehen?
Bitte warten ..
Mitglied: Skyemugen
26.02.2012 um 20:34 Uhr
Zitat von KetschupMajo:
Muss ich da jetzt noch Tokens einbauen? -> FOR /F "tokens=2 delims=_"
Die Frage ist jetzt (gerade nach meinem 1. Posting) nicht dein Ernst, oder?
An welche Stelle und müssen Tokens ins "Klammern" oder in `diesen Dingern´ stehen?
?

Entschuldige aber tust du mir den Gefallen und beschreibst dein Vorhaben mal genauer, denn von
Meine Aufgabe ist aus einem Dateinamen einer PDF Datei ein Archiv aufzubauen
nach
FOR /R

ist ein verdammt weiter weg ... den ich wenn dann sowieso gleich mit
01.
for /f "tokens=2 delims=_" %%s in ('dir /b /s "%Pfad%\*.pdf"') do ...
gehen würde

...

greetz André

P.S.: @bastla, hm abwarten
Bitte warten ..
Mitglied: bastla
26.02.2012 um 20:56 Uhr
@skye
for /f "tokens=2 delims=_" %%s in ('dir /b /s "%Pfad%\*.pdf"') do ...
Wenn Du gleich zerlegst, fehlt Dir aber der Gesamtpfad - und da ja vermutlich doch mehr gewünscht ist, als nur eine Ordnerstruktur zu erstellen, wird der vermutlich noch gebraucht ...
Stringzerlegung (des Datums) ohne Unterprogramm und ohne geeignete Delimiter könnte ohne "delayedExpansion" etwas schwierig werden ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
26.02.2012 um 21:19 Uhr
@bastla
könnte und vermutlich ...

und zum DEp bleibe ich bei meinem
abwarten
Ich wähle Tor 2 und tausche den grünen Umschlag.
Bitte warten ..
Mitglied: KetschupMajo
26.02.2012 um 23:57 Uhr
Zitat von Skyemugen:
> Zitat von KetschupMajo:
> ----
> Muss ich da jetzt noch Tokens einbauen? -> FOR /F "tokens=2 delims=_"
Die Frage ist jetzt (gerade nach meinem 1. Posting) nicht dein Ernst, oder?

;-( Du hast ja recht - hatte ich nicht richtig gelesen.... Hattest es ja eh schon erwähnt...

und ja.... es ist natürlich nicht nur eine Datei... nur soll anhand aller eingehenden .pdf Dateien ein Archiv aufgebaut werden. Anschließend soll das .pdf einmal ins Archiv verschoben und an eine andere Stelle kopiert werden.... das wäre dann ja wieder nicht mehr das Problem...
Bitte warten ..
Mitglied: Skyemugen
27.02.2012 um 07:23 Uhr
Aloha,

die Dateien liegen in einem Verzeichnis, ist das korrekt? Oder gibt es in Eingang auch Unterverzeichnisse? for /R oder nicht for /R, das ist hier die Option ;D

greetz André

Ok. cmd will mich heute verarschen, Unterprogramm funktioniert nicht, ich kapier's nicht, Wert bleibt beim 1. Mal leer und selbst if defined wird ausgeführt, wenn Wert leer ist und beim 2. Mal wird einfach der erste Wert genommen, UARGH!!!!

Gut, dann nehme ich eben bastlas DEp, auch wenn ich es nicht mag

01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Pfad=E:\Test" 
03.
set "Archiv=E:\Archiv" 
04.
set "Kopie=E:\svn" 
05.
for %%s in ("%Pfad%\????_??????_????_?????_????.pdf") do ( 
06.
	for /f "tokens=2 delims=_" %%m in ("%%~ns") do ( 
07.
		set "Wert=%%m" 
08.
		mkdir "%Archiv%\!Wert:~-2!\!Wert:~2,2!\!Wert:~0,2!"2>nul 
09.
		copy "%%s" "%Kopie%">nul 
10.
		move "%%s" "%Archiv%\!Wert:~-2!\!Wert:~2,2!\!Wert:~0,2!" 
11.
12.
13.
pause 
14.
goto :eof
Ich bin heute mal so frei und gehe erst ein mal von einem Verzeichnis aus, wenn's nicht passt, der TE soll ja eigentlich nur angeregt werden

Hm, besser der TE setzt vor move noch ein echo, zum Anschauen (eventuell auch vor mkdir und copy, wenn er's mag.

Die Abfrage, ob ein Verzeichnis bereits existiert, erspare ich mir und unterdrücke einfach die Fehlermeldung, wenn dem so sein sollte ^__^
Bitte warten ..
Mitglied: KetschupMajo
27.02.2012 um 09:52 Uhr
Zitat von Skyemugen:
Aloha,

die Dateien liegen in einem Verzeichnis, ist das korrekt? Oder gibt es in Eingang auch Unterverzeichnisse? for /R oder
nicht for /R, das ist hier die Option ;D


Nein - Unterverzeichnisse sind keine vorhanden....

OK - jetzt hast Du mich leicht überfordert.... ich hab Dir mal kurz markiert was ich nicht verstehe - der Rest ist klar...

@echo off & setlocal enabledelayedexpansion
set "Pfad=E:\Test"
set "Archiv=E:\Archiv"
set "Kopie=E:\svn"
for %%s in ("%Pfad%\????_??????_????_?????_????.pdf") do (
for /f "tokens=2 delims=_" %%m in ("%%~ns") do (
set "Wert=%%m"
mkdir "%Archiv%\!Wert:~-2!\!Wert:~2,2!\!Wert:~0,2!"2>nul
copy "%%s" "%Kopie%">nul
move "%%s" "%Archiv%\!Wert:~-2!\!Wert:~2,2!\!Wert:~0,2!"
)
)
pause
goto :eof
Bitte warten ..
Mitglied: Skyemugen
27.02.2012 um 10:25 Uhr
Aloha,

2>nul

Fehlerkanal wird ins Nirvana umgeleitet (unterdrückt), da ich mir die if exist-Abfrage der Verzeichnisse erspare (denn wenn mehrere Dateien dasselbe Datum aufweisen, existiert das Verzeichnis bei der 2. Datei ja bereits), würde eine Fehlermeldung kommen, dass das Verzeichnis bereits existiert

beim Kopieren unterdrücke ich die normale Ausgabe (nicht die Fehlerausgabe), da das cmd-Fenster sonst voll mit 1 Datei(en) erfolgreich kopiert wäre ;D


greetz André
Bitte warten ..
Mitglied: bastla
27.02.2012 um 12:14 Uhr
@skye
Gut, dann nehme ich eben bastlas DEp, auch wenn ich es nicht mag
Ich sag jetzt nix ...

Grüße
bastla
Bitte warten ..
Mitglied: KetschupMajo
27.02.2012 um 12:26 Uhr
Klärt Ihr mich mal auf?
oder ist das ein Interna?
Bitte warten ..
Mitglied: bastla
27.02.2012 um 18:39 Uhr
Hallo KetchupMajo!

oder ist das ein Interna?
Ja - ein Internum dieses Threads (ich wollte nur einfach den "Zonk" nicht erwähnen - *ups, jetzt isses doch passiert*) ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
27.02.2012 um 19:13 Uhr
[genauso OT]
Moin KetschupMajo,

Zitat von KetschupMajo:
Klärt Ihr mich mal auf?
oder ist das ein Interna?
Ich sach' ma so....

Ich will ja nicht kategorisch ausschliessen, dass es hier auch versprengte Einzel-Interna gibt in unserem schönen Fora.
meine selige Tante Gertrude nahm ja auch immer nur ein Antibiotika .

P.S Und rein interessehalber: wenn ihr als Familie auftretet, kommt ihr dann als KetschupsMajo oder als KetschupMajos oder als KetschupsMajos??

Na ja, Hauptsache jeder bleibt ein Individua.

Grüße
Biber
[/genauso OT]
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch: .rar-Pakete automatisch Ordner erstellen und verschieben (2)

Frage von BowserMD zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

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 ...