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 zum Kopieren von PDF

Frage Entwicklung Batch & Shell

Mitglied: karla123

karla123 (Level 1) - Jetzt verbinden

30.07.2014, aktualisiert 31.07.2014, 1552 Aufrufe, 19 Kommentare, 4 Danke

Liebes Forum,
ich benötige (als Anfänger) eure Hilfe und hoffe mir kann geholfen werden.

Ich habe ein Hauptverzeichnis, ein Unterverzeichniss mit gleichem Namen, dann wiederum mehrere Unterverzeichnisse und in einem dieser Unterverzeichnisse befindet sich ein Ordner mit immer gleichem Namen. Aus diesem Ordner möchte ich alle .pdf Daten in ein separates Verzeichnis kopieren, wenn sich mindestens 2 pdf-Dateien in diesem Ordner befinden.
z.B. Jahr\Monat01\Anton\belicht
Jahr\Monat01\Ulrike\belicht
Jahr\Monat01\Platon\belicht
Jahr\Monat01\Jakobus\belicht
wie zu sehen ist der Ordner Jahr und Monat immer gleich, das folgende Verzeichnis müsste übersprungen werden(?) und alle PDF´s aus dem Ordner "belicht" sollen kopiert werden in ein Verzeichnis z.B. "Kopie"

Ist das mit einem Batch zu lösen? Könntet Ihr mir bitte helfen? Meine Kenntnisse sind leider sehr gering!

Betriebssystem: Windows 7, die Daten befinden sich auf einem Netzlaufwerk, den Batch würde ich gerne von meinem Desktop starten.


Vielen Dank im Voraus!!

LG von Karla
Mitglied: Nr60730
30.07.2014 um 11:38 Uhr
Moin,

such mal nach einer Anleitung vom Biber - Stichwortr batch Datum
Wenn du das gefunden hast - for Schleifen Tutorial vom (wars Pietsch?)

Damit hast du schon alles zusammen.

Dann - was passiert, wenn das script mehrfach aufgerufen wird?

  • Aus diesem Ordner möchte ich alle .pdf Daten in ein separates Verzeichnis kopieren, wenn sich mindestens 2 pdf-Dateien in diesem Ordner befinden.

Versteh den Hintergrund nicht...
Wenn die kopiert und nicht verschoben werden, sind da (fast immer) mehr als zwei Dateien drin, außer da macht einer was mit der Hand...

Gruß
Bitte warten ..
Mitglied: karla123
30.07.2014 um 11:53 Uhr
Ja danach suche ich gleich. Aber wie gesagt ich habe wenig Ahnung von Batches!

Das Script soll nicht mehrmals aufgerufen werden (die Ordner ändern sich pro Monat, das Script würde ich dann jeden Monat an die Namen anpassen)

Also aus dem Ordner "belicht" sollen alle vorhandenen PDF´s wenn mindestens 2 PDF´s vorhanden sind in einen separaten Ordner kopiert werden. Eine Art Zwischensicherung von diesem Ordner.

Ich hoffe das ist Verständlich???
Bitte warten ..
Mitglied: narthan
30.07.2014, aktualisiert um 11:57 Uhr
Moin Karla,

falls ich dein Problem richtig verstanden habe, ist das mit einer For-Schleife, wie Nr60730 schon angemerkt hat, ganz einfach zu lösen.

01.
 @echo off 
02.
for /r "C:\Jahr\Monat01\" %%i in (*.pdf) do xcopy %%i "C:\User\Karla\Desktop\Kopie\"
Pfade müsstest du selbstverständlich anpassen. Probier das doch mal und meld dich falls es wo hakt.

<Edit> hab jetzt erst die Bedingung mit den 2 PDF's gesehen....das ist noch nicht berücksichtigt, ich überleg aber mal gleich </Edit>

Gruß, narthan
Bitte warten ..
Mitglied: karla123
30.07.2014, aktualisiert um 12:30 Uhr
Hallo Narthan,
vielen Dank für Deine Mühe!
also habe die Zeile eingegeben und die Fehlermeldung "in" kann syntaktisch an dieser Stelle nicht verarbeitet werden, bekommen

Kopiert der Batch denn wirklich alle PDF´s nur aus dem Ordner belicht? Oder kopiert er alle PDF´s aus den verschiedenen Unterordner unterhalb von Monat01?


LG Karla
Bitte warten ..
Mitglied: karla123
30.07.2014 um 12:35 Uhr
Lieber Nr60730,
ich habe mir das Tutorial for Schleifen angeschaut und muss dir Mitteilen das ich da gar nicht durchsteige!
Die Schwierigkeit für mich ist die Unterverzeichnisse nach Monat01 zu überspringen (z.B. Anton, Ulrike etc. diese Ändern sich ständig) und in das Verzeichnis belicht zu gelangen.

LG Karla
Bitte warten ..
Mitglied: Nr60730
30.07.2014, aktualisiert um 12:57 Uhr
Zitat von karla123:

Lieber Nr60730,
ich habe mir das Tutorial for Schleifen angeschaut und muss dir Mitteilen das ich da gar nicht durchsteige!

Das macht nix - schreib wou hängst und wir helfen.

Aber nicht so stümperhaft wie Nartan - das sei versprochen.
@echo off für jemanden, der explizit schreibt "Anfänger" ist eher suboptimal.

Die Schwierigkeit für mich ist die Unterverzeichnisse nach Monat01 zu überspringen (z.B. Anton, Ulrike etc. diese Ändern sich ständig) und in das Verzeichnis belicht zu gelangen.

Wie ich bereits geschrieben habe - zuerst mußt du die Rahmenbedingungen festlegen.
"Ändern" sollte man da nix müssen, das macht eh keiner
Jahr\Monat01\Anton\belicht
ein (daher auch der Tipp zum Biber Tut)
01.
Laufwerk\%date:~-4%\Monat%date:~-7,2%\Pfadx\belicht
ist da genügsamer.


Ich geb dir mal einen Tipp:
01.
dir /s *.pdf
liefert dir eine liste allen Unterverzeichnissen mit der Anzahl Treffer.

01.
dir /b /s *.pdf
liefert dir alle pdfs in () allen Unterverzeichnissen samt Pfadangaben.

Beides sind 1a Ansätze um das in einer Schleife durchzunudeln.






LG Karla
Bitte warten ..
Mitglied: karla123
30.07.2014 um 14:31 Uhr
Lieber Nr60730,
vielen Dank für deinen Tip.
Da ich wie bereits beschrieben keine Ahnung von der Batch-Programmierung habe, kann ich auch keine Schleifen programmieren. Meine Kenntnisse beruhen auf das gute alte XCopy etc.

Dein Ansatz mit: Laufwerk\%date:~-4%\Monat%date:~-7,2%\Pfadx\belicht wird wohl funktionieren, nur wie komme ich in die jeweiligen Verzeichnisse belicht??

Wie beschrieben ich habe ein Hauptverzeichnis (Jahr)
ein Unterverzeichnis (Monat)
etliche Unterverzeichnisse bis zu 70 oder noch mehr (die Benamungen von diesen Unterverzeichnissen sind alle unterschiedlich)
in diesen verschiedenen (also 70 oder mehr) Unterverzeichnissen befindet sich in jedem Unterverzeichnis ein Ordner belicht und aus diesem belicht-Ordner sollen wenn er mindestens 2 PDF´s enthält, alle PDF´s (können 4 oder mehr sein) in ein Verzeichnis Kopie kopiert werden.

Ich stehe vor dem Problem die einzelnen 70 Unterordner zu öffnen und dann in den jeweiligen Ordner belicht zu gelangen?!

Verständlich???

LG Karla
Bitte warten ..
Mitglied: Nr60730
30.07.2014, aktualisiert um 15:01 Uhr
Liebe Karla,

Ich müsste jetzt etwas länger ausholen, aber ich machs einfach mal...

  • Ein Admin steht immer unter Druck
  • Er muß nachvollziehbar seinen Job für potentielle Nachfolger / Revisoren durchziehen.

  • Das, was "irgendjemand" vorhat - geht "nur" mit einer Schleife.
  • Das Schleifen Tut ist wirklich (außer IQ < Haribo Goldbär) logisch aufgebaut
  • Jeder Befehl kennt ein /? oder manchmal auch /help.

Es gab vor längerer Zeit mal einen "User", der hat hier viel Zeit, Anleitungen usw, hinterllassen. Dann kam hier etwas Stress auf der Typ hatte die interne Revision am Hals und mußte sich den Vorwurf gefallen lassen vieles seiner Werke wären aus dem Internet abgekupfert - damit meinten die "diese" Seite. Dummerweise waren die meisten Antworten "Tuts" usw.. in einem Zeitraum veröffentlicht, wo andere Leute eigentlich arbeiten....

Mancher fand das dann nicht so lustig und der Typ hat seine Sachen dann hier weggenommen, um die interne Revision usw. vom Hals zu kriegen.

So ein paar "Spacken" die sich hier dann noch mit "Schreib doch auf Facebook wenn du mir nicht helfen magst usw." haben
da auch noch einen Beitrag geleistet.

Ergo:
Eine Hand wäscht die andere, aber einseifen mußt du dich leider selber.


Edit: sorry Friemler hatte irgendwie Pietsch im Verdacht...

Gruß
Bitte warten ..
Mitglied: karla123
30.07.2014 um 15:29 Uhr
Lieber Nr60730,

es ist mir schon verständlich das die Beantwortung meiner Anfrage Zeit in Anspruch nimmt! Sicherlich sollte ich mir das Tutorial aneignen und damit beginnen Batches zu erlernen. Allerdings benötige ich diese sehr selten. Ich konnte nicht wissen wie schwierig und zeitaufwändig sich das Problem darstellt. In meinem jugendlichen Leichtsinn habe ich gedacht, in dem Forum sind Leute "die machen das mal eben"!
Tut mir also Leid das ich Eure Zeit in Anspruch genommen habe.

Nochmals vielen Dank für die Hilfe und Hinweise von Dir!!


Karla
Bitte warten ..
Mitglied: Nr60730
30.07.2014 um 15:46 Uhr
grmblfixx..

das ist theoretisch ein "klacks"

Es bringt dir nix, wenn wir dir das vormalen - so wie da oben...

also habe die Zeile eingegeben und die Fehlermeldung "in" kann syntaktisch an dieser Stelle nicht verarbeitet werden, bekommen.

Das sagt mir - du hast eine Zeile direkt in die shell eingegeben - das war aber eine batch/cmd.
Auch das sollte in dem Tut drinstehen ein % cmd/shell zwei %% batch.

Was mir leid tut, ist wenn hier Zeit vergeudet wird - die geb ich gerne her - ich will aber auch was dafür.

das lächeln wenn man es selber hinbekommen hat obwohl der Weg steinig war, ist viel mehr wert als copy & paste und nix versteh warum wieso.
Bitte warten ..
Mitglied: karla123
30.07.2014 um 16:16 Uhr
Das ist nun schon das zweite Mal das du für deine Zeit was willst. Was denn Geld???
Ich habe doch nun schon vorher bekundet das es mir Leid tut euch die Zeit gestohlen zu haben!!

Nun den "klacks" werde ich wohl kurzfristig anders lösen müssen! Danach werde ich mich mit dem Tutorial beschäftigen!

Also nochmal: Tut mir Leid das ich Eure Zeit in Anspruch genommen habe!!!!


Nochmals vielen Dank!!!
Bitte warten ..
Mitglied: Nr60730
30.07.2014 um 16:37 Uhr
Das ist nun schon das zweite Mal das du für deine Zeit was willst. Was denn Geld???

Roflol - yupp und oben hab ich den Vorvertrag schonmal hingemalt. Wie bei einem Vertrag üblich, bitte nicht das kleingedruckte lesen.
Klartext - es bringt dir nix, wenn du etwas hast was du nicht verstehst und damit selber anpassen kannst.

  • Zeit stehlen ist sowas wie Raubkopieren Vielleicht (hoffentlich nicht) meinst du vergebene Mühe, das wär allerdings schade.

Von vorne:

  • warum kopieren?
  • warum diese Ordnernamen? (in einem Netzwerk kann man auch den Zeitstempel einer Datei verarbeiten und braucht u.Umständen solche "Krücken" nicht wirklich)

Diese zeile, die du da oben abgetippt hast - da mußt du (wenn du es so machst, wie vorher) aus den zwei %% eines machen!
Logischerweise deine Pfade vorher auch passend machen.

Das Ziel (zweiter Pfad) sollte dann aber nicht auf dem Destop liegen, das ist komplett unprofessionell (Servergespeicherte Profile; Produktiv [dein Destop] und Test [dieser] mischt man[n] /Frau nicht)

Gruß
Bitte warten ..
Mitglied: bastla
LÖSUNG 30.07.2014, aktualisiert 31.07.2014
Hallo karla123 und willkommen im Forum!

Alle "belicht"-Ordner unterhalb von "D:\Jahr\Monat01\" erhältst Du zB per
for /f "delims=" %%i in ('dir /s/b/ad D:\Jahr\Monat01\belicht"') do echo Bearbeite "%%i"
- mit der Betonung auf "alle"; wenn es daher solche Ordner auch in anderen Ordnerebenen geben kann, bräuchtest Du eine Schleife der Art
01.
for /d %%i in ("D:\Jahr\Monat01\*") do if exist "%%i\belicht" echo Bearbeite "%%i\belicht"
- in "%%i" findest Du alle Unterordner von "D:\Jahr\Monat01", also lt Deinem Beispiel "Anton", "Ulrike", etc.

Das Kriterium "ab 2 enthaltenen pdf-Dateien" lässt sich leichter in einem Unterprogramm umsetzen - ungetestet etwa:
01.
@echo off & setlocal 
02.
set "Basis=D:\Jahr\Monat01" 
03.
set "Ordner="belicht" 
04.
set "Typ=pdf" 
05.
set "Ziel=D:\PDF gesammelt" 
06.
 
07.
for /d %%i in ("%Basis%\*") do if exist "%%i\%Ordner%\*.%Typ%" call :ProcessDir "%%i\%Ordner%" 
08.
pause 
09.
goto :eof 
10.
 
11.
:ProcessDir 
12.
set "Kopieren=" 
13.
for /f "skip=1 delims=" %%a in ('dir /b/a-d "%~1\*.%Typ%"') do set "Kopieren=True" 
14.
if defined Kopieren echo xcopy "%~1\*.%Typ%" "%Ziel%\" 
15.
goto :eof
Das "echo" vor dem "xcopy" sorgt dafür, dass der Ablauf nur simuliert wird (da so nicht kopiert, sondern nur der Kopier-Befehl ausgegeben wird) - soferne das Ergebnis gut aussieht, einfach das "echo" entfernen.

Wenn Du den Ablauf nachvollziehen willst, aus dem "echo off" ein "echo on" machen, und bei Fragen natürlich: fragen ...

Was noch zu bedenken wäre: Können gleichnamige pdf-Dateien in den verschiedenen "belicht"-Ordnern vorkommen?

Grüße
bastla
Bitte warten ..
Mitglied: karla123
30.07.2014 um 17:23 Uhr
Hallo bastla,

Wow! Das werde ich morgen gleich mal testen!!

Ich habe mir nun schon einmal das o.g. Tutorial angeschaut und habe folgende "Lösung" gebastelt:

@echo off
for /r "C:\Jahr\Monat01\" %%i in ("belicht\*.pdf") do xcopy /CFRYV %%i "C:\User\Karla\Desktop\Kopie\"

Zu Deiner Frage: normalerweise sollten gleichnamige PDF-Dateien nicht vorkommen, aber jetzt wo du das sagst? Wäre doch möglich!

Melde mich morgen mit meinen Ergebnissen wieder!!


Vielen vielen Dank

LG Karla
Bitte warten ..
Mitglied: karla123
31.07.2014 um 14:07 Uhr
Hallo bastla,

ich habe den Batch nun getestet und bin begeistert (habe in Zeile 3 noch ein " eingefügt) er funktioniert tadellos!!!

Zu deiner Frage wegen der gleichnamigen PDF-Dateien, das sollte normal nicht vorkommen. Wenn ja kommt doch eine Meldung von XCopy das die Datei schon vorhanden ist. Das dürfte genügen.

Eine Frage habe ich aber doch noch. Ist es ohne großen Aufwand möglich bei der Eingabe das zweite Unterverzeichnis (z.B. Monat01) per Eingabeaufforderung
zu ändern (also einen anderen Monat einzugeben)?

Falls das zuviel Aufwand ist dann lass es so!

Noch einmal möchte ich mich bei Dir ganz lieb bedanken!!!!

LG Karla
Bitte warten ..
Mitglied: narthan
LÖSUNG 31.07.2014, aktualisiert um 15:26 Uhr
Hey,

da kann sogar ich "Stümper" vlt. helfen

Zitat von karla123:
ich habe den Batch nun getestet und bin begeistert (habe in Zeile 3 noch ein " eingefügt) er funktioniert tadellos!!!

...hier hättest du kein Anführungszeichen einfügen müssen, das zwischen = und belicht ist eher zu viel.


Eine Frage habe ich aber doch noch. Ist es ohne großen Aufwand möglich bei der Eingabe das zweite Unterverzeichnis
(z.B. Monat01) per Eingabeaufforderung
zu ändern (also einen anderen Monat einzugeben)?

Mit dem set-Befehl und dem Zusatz /p kannst du eine Eingabe fordern und diese in einer Variable speichern.
01.
set /p month="Bitte einen Monat eingeben:" 
02.
echo %month%
Die echo Zeile dient nur für dich zum besseren Verständnis, kannst du gerne weglassen. Die set-Zeile ist entscheidend und muss zwischen der 1. und 2. Zeile von bastla's Code eingefügt werden. Außerdem musst du dann in der (derzeitigen) Zeile 2 das "Monat01" durch die Variable %month% ersetzen. Sprich:
01.
@echo off & setlocal 
02.
set /p month="Bitte einen Monat eingeben:" 
03.
set "Basis=D:\Jahr\%month%"
)

Schönen Gruß, Stümper-narthan
Bitte warten ..
Mitglied: karla123
31.07.2014 um 15:25 Uhr
Hallo Narthan,

na, das hört sich ja leicht "gekränkt" an??

Jedenfalls hat Deine Anweisung prima geklappt!!!

Auch Dir muss ich ein liebes Dankeschön sagen!

LG Karla
Bitte warten ..
Mitglied: bastla
31.07.2014 um 15:27 Uhr
Hallo narthan!

Danke für die Ergänzug (und die Korrektur meines "Gestümperes" in Zeile 3 - es ist tatsächlich das Anführungszeichen nach dem "=" völllig unnötig) ...

Grüße
bastla
Bitte warten ..
Mitglied: narthan
31.07.2014 um 15:28 Uhr
Zitat von karla123:
na, das hört sich ja leicht "gekränkt" an??

Ja doch, gut erkannt

Jedenfalls hat Deine Anweisung prima geklappt!!!

Das freut mich! Gern geschehen! Falls du keine Fragen mehr hast, nicht vergessen die Frage zu schließen

Schöne Grüße, narthan
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

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

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...