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

Datei Verwaltung

Frage Entwicklung Batch & Shell

Mitglied: Spidi-25

Spidi-25 (Level 1) - Jetzt verbinden

03.04.2010 um 15:14 Uhr, 4044 Aufrufe, 14 Kommentare

Guten Tag allerseits

Ich habe mir vorgestellt per Batch Dateien Verwalten und zwar folgende,

es handelt sich um Folgende Dateien die sich immer in unterschiedlichen Ordnern und mit unterschiedlichen Namen befinden

z.B
5000_500_101_00.pdf
5000_500_102_00.pdf
5000_500_103_01.pdf
5000_500_104_00.pdf

5000_500_101_00.jpg
5000_500_102_00.jpg
5000_500_103_01.jpg
5000_500_104_00.jpg


ich habe mir folgendes vorgestellt

1. Dateinamen auslesen, Kürzen und Ordner erstellen, z.B. in Ordnernamen 5000_500 und alle Pdf´s rein kopieren mit Originalnamen.
2. Ordner z.B. 5000_500 Verschieben nach D:\PDF\ (dieser Pfad ist immer gleich) wenn Ordner schon vorhanden nur die Dateien rein kopieren.(ich glaube es geht automatisch wen Ordner schon vorhanden)
3. Wenn im Ordner z.B. D:\PDF\5000_500 es schon eine Datei mit dem Namen 5000_500_103_00 also älter als die 5000_500_103_01 gibt, dann einen Ordner alt erstellen und und die Datei 5000_500_103_00 in den Ordner alt verschieben.


Danach das gleiche mit .jpg machen, nur das hier das Zielverzeichnis D:\jpg\ heist



Ich bedanke mich im Voraus

P.S. Frohe Ostern wünsche ich euch allen.
Mitglied: AndreasBrecht
03.04.2010 um 15:26 Uhr
Ich bin halt was batches angeht nicht so der Technische, aber ich würde jetzt einfach erstmal mit dem FilesystemObject die Dateien auflisten. Die Info kann man in ein Array oder Recordset wegschreiben. Das geht man dann durch benennt um und verschiebt die Dateien und legt sich die ORdner an, wie man sie braucht.
Bitte warten ..
Mitglied: bastla
03.04.2010 um 17:32 Uhr
Hallo Spidi-25!

Nun gut, hangeln wir uns von Thread zu Thread - oder möchtest Du ev einmal den gewünschten Gesamtablauf - zB mit Gegenüberstellung Ist- / Sollzustand - beschreiben?

01.
@echo off & setlocal 
02.
set "Quelle=D:\Viele Dateien" 
03.
set "Ziel=D:\" 
04.
 
05.
pushd "%Quelle%" 
06.
for %%t in (PDF JPG) do ( 
07.
    for /f %%i in ('dir /b /on /a-d *_*_*_*.%%t') do ( 
08.
        for /f "tokens=1-4 delims=_" %%a in ("%%~ni") do ( 
09.
            md "%Ziel%%%a_%%b\alt" 2>nul 
10.
            copy "%%i" "%Ziel%%%a_%%b\">nul 
11.
            for /f "skip=1 delims=" %%x in ('dir /b /o-n /a-d "%Ziel%%%a_%%b\%%a_%%b_%%c_*%%~xi"') do move "%Ziel%%%a_%%b\%%x" "%Ziel%%%a_%%b\alt\" 
12.
13.
14.
15.
popd
Vorausgesetzt habe ich, dass es keine Namenskollisionen gibt (also zB Dateien mit dem Namen "5000_500_103_01.pdf" nicht sowohl im "Quell-" als auch im "Ziel-" oder "Ziel\alt"-Ordner existieren).

Zusätzlich ist bei der Angabe des Zieles der Pfad immer mit abschließendem "\" zu schreiben (also wenn nicht nach "D:\PDF\...", sondern nach "D:\Archiv\PDF\..." kopiert werden soll, müsste in Zeile 3 als Zielpfad "D:\Archiv\" angegeben sein), während der Quellpfad keinen "\" am Ende haben darf.

Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
03.04.2010 um 23:49 Uhr
Hallo bastla

danke für die schnellen antworten, ich sehe du hast die Code´s voll im Griff
ich habe erst mal nur die 3 Thread´s, wen das alles funktioniert bin ich schon mal zufrieden!
Außer dem hast du schon zu einem Thread eine für mich passende Antwort geliefert, danke noch mal.

Zur diesem Thread
in der Zeile 2 steht Quelle=D:\ verstehe ich das richtig das der Code von dem Laufwerk D:\ ausgeht? Die Dateien befinden sich aber manchmal im Laufwerk V:\ manchmal im Laufwerk K:\ wie es bei einer Firma vorkommt verschiedene Laufwerke.

Zu der Aussage (Vorausgesetzt habe ich, dass es keine Namenskollisionen gibt (also zB Dateien mit dem Namen "5000_500_103_01.pdf" nicht sowohl im "Quell-" als auch im "Ziel-" oder "Ziel\alt"-Ordner existieren).
gibt es keine Möglichkeit wenn die Datei 5000_500_103_01.pdf im "Quell-" als auch im "Ziel-" oder "Ziel\alt"-Ordner existieren eine abfrage überschreiben einzubauen?
Bitte warten ..
Mitglied: bastla
04.04.2010 um 00:03 Uhr
Hallo Spidi-25!
in der Zeile 2 steht Quelle=D:\ verstehe ich das richtig das der Code von dem Laufwerk D:\ ausgeht?
Ja.
Die Dateien befinden sich aber manchmal im Laufwerk V:\ manchmal im Laufwerk K:\ wie es bei einer Firma vorkommt verschiedene Laufwerke.
Wenn Du weißt, wie sich das Laufwerk feststellen lässt, sollte es kein Problem sein, das im Batch zu berücksichtigen ...
gibt es keine Möglichkeit wenn die Datei 5000_500_103_01.pdf im "Quell-" als auch im "Ziel-" oder "Ziel\alt"-Ordner existieren eine abfrage überschreiben einzubauen?
Eine derartige Abfrage widerspricht eigentlich dem Sinn eines Batches, nämlich einen automatisierten Ablauf zu ermöglichen - zu realisieren wäre es zwar mit dem Schalter "/-y" für den "copy"- und den "move"-Befehl, besser wäre aber eine Strategie, die eine automatische Behandlung erlaubt - und wenn nur in Form eines Logs, das die nicht kopierten / verschobenen Dateien festhält.

Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
04.04.2010 um 00:35 Uhr
Wenn Du weißt, wie sich das Laufwerk feststellen lässt, sollte es kein Problem sein, das im Batch zu berücksichtigen ...
nein weiß ich leider nicht bin ein Anfänger in diesem Bereich.


>Eine derartige Abfrage widerspricht eigentlich dem Sinn eines Batches, nämlich einen automatisierten Ablauf zu ermöglichen - zu realisieren wäre es zwar mit dem Schalter "/-y" für den "copy"- und den "move"-Befehl, besser wäre aber eine Strategie, die eine automatische Behandlung erlaubt - und wenn nur in Form eines Logs, das die nicht kopierten / verschobenen Dateien festhält.

gibt es eine Möglichkeit wenn sich keine Datei im "Ziel-" oder "Ziel\alt"-Ordner befindet automatische Durchführung. Wenn aber schon vorhanden dann nachfragen, kommt normalerweise nicht vor das die Dateien vorhanden sind, aber ich habe noch Kollegen die Vielleicht eine oder die andere Datei abgelegt haben.
Bitte warten ..
Mitglied: bastla
04.04.2010 um 00:59 Uhr
Hallo Spidi-25!
gibt es eine Möglichkeit wenn sich keine Datei im "Ziel-" oder "Ziel\alt"-Ordner befindet automatische Durchführung
Das passiert ohnehin ...
Wenn aber schon vorhanden dann nachfragen
Wie schon erwähnt, kann jeweils durch ein "copy /-y ..." bzw "move /-y ..." gefragt werden, ob eine gleichnamige Zieldatei überschrieben werden soll - allerdings erscheint mir das nicht wirklich sinnvoll, denn: Was soll denn bei einer Antwort "nein" weiter passieren?

Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
04.04.2010 um 01:15 Uhr
Die Dateien im Quell Ordner belassen bzw. das so automatisieren das die schon vorhandenen Dateien im Quellordner bleiben, den dann weiß ich das ich nachschauen muss.

wie Sieht es mit der 2 Zeile aus? Was muss da geändert werden?
Bitte warten ..
Mitglied: bastla
04.04.2010 um 01:24 Uhr
Hallo Spidi-25!

Nach bisherigem Stand bleiben alle Dateien im Quellordner - es soll ja kopiert werden ...
wie Sieht es mit der 2 Zeile aus? Was muss da geändert werden?
Leider verstehe ich Deine Frage nicht - in dieser Zeile kannst Du den "Quell"-Pfad (aus dem die Dateien - nach derzeitigem Stand - kopiert werden sollen) eintragen (und nur eben nicht am Ende einen "\" schreiben) ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
04.04.2010 um 01:51 Uhr
...und noch mal, Spidi-25,

ergänzend zu bastla, die Behauptung : So wird das nix.

Es gab mal weiter oben folgende Plauderei zwischen euch:

[Spidi-25:] Die Dateien befinden sich aber manchmal im Laufwerk V:\ manchmal im Laufwerk K:\ wie es bei einer Firma vorkommt verschiedene Laufwerke.
[bastla] Wenn Du weißt, wie sich das Laufwerk feststellen lässt, sollte es kein Problem sein, das im Batch zu berücksichtigen ..
[Spidi-25] nein weiß ich leider nicht bin ein Anfänger in diesem Bereich.

Das ist einer der rund 25 Momente in deinen momentan offenen Beiträgen, in denen ich als unbefangener Mitleser ins Essen brechen möchte, aber als hilfsbereiter Moderator versuche zu übersetzen.

Hey, Spidi-25, der liebe bastla wollte dir sagen: Bevor irgendetwas automatisiert werden kann, sollte es organisatorisch geregelt und definiert sein.
"Batch" bedeutet: Es wird ein ohnehin vorhandener Arbeitsprozess an den Stellen etwas schneller gemacht, wo sich Abläufe wiederholen und reproduzierbar eintreten.
Oder aber es wird durch einen Batch-Prozess ein neuer "zwingender" Ablauf etabliert.

Und solange es in deiner Welt so ist, dass es mal Laufwerk K: und mal aber V: sein kann (und keiner weiß es, wenn der Batch gestartet wird) oder wenn es "aber Kollegen gibt, die es ein bisschen anders machen", solange brauchst du weder Skript-Handwerker noch Script-Künstler um irgendwelche Teil-Feinheiten in den Ornamenten um Rat ersuchen.

Vergiss einen Moment, dass es Batches und VB-Script und Turbo-X++ gibt. Kommt im nächsten Schritt.
Definiere erst mal einen eindeutigen, verbindlichen, reproduzierbaren Prozess mit EINEM Startpunkt, in dem alle realistisch zu erwarteten Fälle berücksichtigt und zu einem gesteuerten Abschluss geführt werden.

Grüße
Biber
Bitte warten ..
Mitglied: Spidi-25
04.04.2010 um 01:51 Uhr
Nach bisherigem Stand bleiben alle Dateien im Quellordner - es soll ja kopiert werden ...
wie gesagt es kommt nur vor wen ein Kollege die Daten schon abgelegt hat. dann sollen die Daten nicht verschoben werden bzw. nur die die es im Zielverzeichnis nicht gibt.

Leider verstehe ich Deine Frage nicht - in dieser Zeile kannst Du den "Quell"-Pfad (aus dem die Dateien - nach
derzeitigem Stand - kopiert werden sollen) eintragen (und nur eben nicht am Ende einen "\" schreiben)

wenn ich ein festen Quellpfad habe, dann muss ich mir mehrere cmd dateien anlegen, eins für V: eins für K:. Den ich möchte nicht wenn ich Daten von V: ablege und in einer Stunde von K: die CMD umschreiben, kann man das nicht umgehen?

noch eine frage zur Zeile 2 angenommen die Daten Befinden sich auf V:\Technik\ Holz 10 Dateien im Ordner Holz
V:\Technik\Metall 5 Dateien im Ordner Metall und ich mich mit dem Commander in dem Ordner Metall befinde werden die Dateien Kopiert oder muss der genaue Pfad V:\Technik\Metall angegeben werden oder reicht nur Quelle=V:\
Bitte warten ..
Mitglied: Spidi-25
04.04.2010 um 02:23 Uhr
Also ich fange von vorne an

Also es kommt ein Auftrag ins Haus, es wird eine Auftragsnummer angelegt und es sieht folgender maßen aus.


V:\Zeichnung\5000_Kunde("5000 und Kunde"Variabel)\5000_500_Biegen\jetzt kommen zum BSP. oben genannte Dateien als .cat, durch eine CMD Skript Befehl werden .PDF´s und .DXF dateien erzeugt.

die PDF`s werden dann manuell nach D:\Fertig\PDF\5000_50 in den ordner 5000_50 Kopiert
die DXF werden dann manuell nach D:\Fertig\DXF\5000_50 in den ordner 5000_50 Kopiert
wenn alles fertig ist

und wenn es eine Änderung gibt wird die geänderte Datei z.B. als 5000_500_103_01.cat gespeichert und in unterordner z.B. V:\Zeichnung\5000_Kunde("5000 und Kunde"Variabel)\5000_500_Biegen\test kopiert, damit nur von der neue Datei .pdf und . DXF durch den CMD Skript Befehl erzeugt werden.

Danch wird die Datei 5000_500_103_01 in das Verzeichnis D:\Fertig\DXF\5000_50 in den ordner 5000_50 Kopiert und die 5000_500_103_00 in den Ordner D:\Fertig\DXF\5000_50\alt

ich hoffe jetzt werdet ihr mich verstehen.
Bitte warten ..
Mitglied: Spidi-25
04.04.2010 um 13:05 Uhr
Hallo bastla

es tut mir Leid der Code funktioniert doch 1a vielen vielen Dank, hast mir super geholfen Wahnsinn!!!

es war mein Fehler, habe beim einfügen was vergessen und dann hat mich noch die

02 Zeile set "Quelle=D:\Viele Dateien" verirrt


habe es wie folgt gemacht und den Code leicht verändert sieh unten.

den Code in eine ("Ablge.cmd Dateinamen") Datei abgespeichert und die Datei nach C:\Windows kopiert.
Dann öffne ich meinen Filecommander gehe in z.B. V:\Zeichnung\5000_Kunde("5000 und Kunde"Variabel)\5000_500_Biegen Ordner, und tippe unten in die Kommandozeile von dem Filecommander Ablage und Sieh da die Daten sind wie gewünscht, die PDF´s sind im Laufwerk D:\PDF\ und die DXF´s sind in D:\DXF\

und das egal in welchem Laufwerk sich die Daten befinden Hammer Geil.
Ob wohl ich die 2 Zeile immer noch nicht verstehe, das ist mir aber egal es läuft wie gewünscht und das ist wichtig!

Vielen vielen dank noch mal.



01.
@echo off & setlocal  
02.
set "set "Quelle=D:\Viele Dateien"  
03.
set "Ziel=D:\PDF\"  
04.
 
05.
pushd "%Quelle%"  
06.
for %%t in (PDF) do (  
07.
    for /f %%i in ('dir /b /on /a-d *_*_*_*.%%t') do (  
08.
 
09.
        for /f "tokens=1-4 delims=_" %%a in ("%%~ni") do (  
10.
            md "%Ziel%%%a_%%b\alt" 2>nul  
11.
            copy "%%i" "%Ziel%%%a_%%b\">nul  
12.
            for /f "skip=1 delims=" %%x in ('dir /b /o-n /a-d "%Ziel%%%a_%%b\%%a_%%b_%%c_*%%~xi"') do move "%Ziel%%%a_%%b\%%x" "%Ziel%%%a_%%b\alt\"  
13.
        )  
14.
    )  
15.
)  
16.
@echo off & setlocal  
17.
set "set "Quelle=D:\Viele Dateien"  
18.
set "Ziel=D:\DXF\"  
19.
 
20.
pushd "%Quelle%"  
21.
for %%t in (DXF) do (  
22.
    for /f %%i in ('dir /b /on /a-d *_*_*_*.%%t') do (  
23.
 
24.
        for /f "tokens=1-4 delims=_" %%a in ("%%~ni") do (  
25.
            md "%Ziel%%%a_%%b\alt" 2>nul  
26.
            copy "%%i" "%Ziel%%%a_%%b\">nul  
27.
            for /f "skip=1 delims=" %%x in ('dir /b /o-n /a-d "%Ziel%%%a_%%b\%%a_%%b_%%c_*%%~xi"') do move "%Ziel%%%a_%%b\%%x" "%Ziel%%%a_%%b\alt\"  
28.
        )  
29.
    )  
30.
)  
31.
popd  
[Edit Biber] CodetaX nachgezogen, [/Edit]
Bitte warten ..
Mitglied: bastla
04.04.2010 um 13:54 Uhr
Hallo Spidi-25!

Wenn Du von Anfang an klar gestellt hättest, dass Du den Batch immer aus dem "Quell"-Ordner heraus startest (über Deinen "Filecommander") hätten wir uns die Zeile 2 (und auch die Zeile 5) sparen können - daher einfach weg damit (besonders, da die Zeile 2 in der jetzigen Form ohnehin keinen Sinn hat).

Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
04.04.2010 um 14:09 Uhr
Alles klar erledigt und es läuft Prima!!!

THX
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Informationsdienste
gelöst Dienstplan als ics bzw. ical-Datei zur Verfügung stellen (7)

Frage von FreshRawrr zum Thema Informationsdienste ...

Internet
Selbstgehostete B2B Datei-Sharing-Portale wie ProjectSend (3)

Frage von Hannes-Schurig zum Thema Internet ...

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

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (19)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...