Batch zum Kopieren von PDF
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 245073
Url: https://administrator.de/contentid/245073
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
19 Kommentare
Neuester Kommentar
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?
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ß
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ß
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.
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
falls ich dein Problem richtig verstanden habe, ist das mit einer For-Schleife, wie Nr60730 schon angemerkt hat, ganz einfach zu lösen.
@echo off
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
Zitat von @karla123:
Lieber Nr60730,
ich habe mir das Tutorial for Schleifen angeschaut und muss dir Mitteilen das ich da gar nicht durchsteige!
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
Laufwerk\%date:~-4%\Monat%date:~-7,2%\Pfadx\belicht
Ich geb dir mal einen Tipp:
dir /s *.pdf
dir /b /s *.pdf
Beides sind 1a Ansätze um das in einer Schleife durchzunudeln.
LG Karla
Liebe Karla,
Ich müsste jetzt etwas länger ausholen, aber ich machs einfach mal...
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ß
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ß
grmblfixx..
das ist theoretisch ein "klacks"
Es bringt dir nix, wenn wir dir das vormalen - so wie da oben...
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.
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.
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ß
Hallo karla123 und willkommen im Forum!
Alle "belicht"-Ordner unterhalb von "D:\Jahr\Monat01\" erhältst Du zB per
- mit der Betonung auf "alle"; wenn es daher solche Ordner auch in anderen Ordnerebenen geben kann, bräuchtest Du eine Schleife der Art
- 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:
Das "
Wenn Du den Ablauf nachvollziehen willst, aus dem "
Was noch zu bedenken wäre: Können gleichnamige pdf-Dateien in den verschiedenen "belicht"-Ordnern vorkommen?
Grüße
bastla
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"
for /d %%i in ("D:\Jahr\Monat01\*") do if exist "%%i\belicht" echo Bearbeite "%%i\belicht"
Das Kriterium "ab 2 enthaltenen pdf-Dateien" lässt sich leichter in einem Unterprogramm umsetzen - ungetestet etwa:
@echo off & setlocal
set "Basis=D:\Jahr\Monat01"
set "Ordner="belicht"
set "Typ=pdf"
set "Ziel=D:\PDF gesammelt"
for /d %%i in ("%Basis%\*") do if exist "%%i\%Ordner%\*.%Typ%" call :ProcessDir "%%i\%Ordner%"
pause
goto :eof
:ProcessDir
set "Kopieren="
for /f "skip=1 delims=" %%a in ('dir /b/a-d "%~1\*.%Typ%"') do set "Kopieren=True"
if defined Kopieren echo xcopy "%~1\*.%Typ%" "%Ziel%\"
goto :eof
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
Hey,
da kann sogar ich "Stümper" vlt. helfen
...hier hättest du kein Anführungszeichen einfügen müssen, das zwischen = und belicht ist eher zu viel.
Mit dem set-Befehl und dem Zusatz /p kannst du eine Eingabe fordern und diese in einer Variable speichern.
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: )
Schönen Gruß, Stümper-narthan
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!!!
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)?
(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.
set /p month="Bitte einen Monat eingeben:"
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:
@echo off & setlocal
set /p month="Bitte einen Monat eingeben:"
set "Basis=D:\Jahr\%month%"
Schönen Gruß, Stümper-narthan
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