Top-Themen

Aktuelle Themen (A bis Z)

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

Neueste Dateien verarbeiten - per Batch, VBScript oder Powershell

Frage Entwicklung Batch & Shell

Mitglied: 48507

48507 (Level 2)

27.01.2010, aktualisiert 11:48 Uhr, 7607 Aufrufe, 7 Kommentare

Moin,

folgende Situation:

Eine SQL-Abfrage liefert eine Liste mit bestimmten Nummern. Zu den Nummern gibt es PDF-Dateien. Die PDF soll kopiert werden.

Problem: Zu einer Nummer kann es mehrere PDF-Dateien geben (neuere Versionen).

Beispiel:

RE2009NRW003670.pdf gehört zu 2009NRW003670
RE2009NRW003670.02.pdf gehört ebenfalls zu 2009NRW003670, neuere Version

Um die neueste Version zu bekommen, muss ich also nach dem Datum filtern, da in der Datenbank nur 2009NRW003670 gespeichert wird (und ohne RE davor).

01.
@ECHO OFF 
02.
 
03.
: Speicherort SQL-Abfrage 
04.
 
05.
set sqltxt=C:\sql.txt 
06.
 
07.
: Die Datei zeilenweise auslesen 
08.
FOR /f %%f IN (%sqltxt%) DO ( 
09.
 
10.
 zweite Schleife... 
11.
 
12.
13.
 
Weiter bin ich nicht gekommen. Kenn mich mit Batch nicht so aus. Wie könnte die zweite Schleife aussehen?
Mitglied: 60730
27.01.2010 um 11:58 Uhr
Servus,

so ganz klar ist mir das aber nicht...

  • Die PDF soll kopiert werden.
  • Zu einer Nummer kann es mehrere PDF-Dateien geben (neuere Versionen).

Wenn Du die Dateien immer und immer wieder neu erzeugst und danach kopierst, wirst du irgendwann einen richtigen Datensatzsalat haben.

Wenn die Dateien aber verschoben werden - fällt doch die Hälfte deiner Probleme weg.

Du sprichst "Schleife" an - und meinst damit For

For /? liefert dir
%~nI - Erzeugt nur den Dateinamen von %I.
genauer an


Gruß
Bitte warten ..
Mitglied: 48507
27.01.2010 um 12:06 Uhr
Spielt keine Rolle. Die PDFs werden anschließend per E-Mail versendet und danach gelöscht. Der Kunde soll neuere Versionen erhalten. Die PDFs werden von einer Datenbankanwendung erzeugt, da kann ich nichts tun.
Bitte warten ..
Mitglied: 60730
27.01.2010 um 12:13 Uhr
Zitat von 48507:
Spielt keine Rolle. Die PDFs werden anschließend per E-Mail versendet und danach gelöscht.

Was oder wer?

Naja - das hört sich doch schon wieder anders an - schau mal nach Blat / Bmail

Der Kunde soll neuere Versionen erhalten. Die PDFs werden von einer Datenbankanwendung erzeugt, da kann ich nichts tun.

Doch kannst du dein "Problem" gehört zu denen, das ganz sicher mit einer Schleife und nicht mit zweien gelöst wird und das genauso hier schon mindestens 5* gepostet und gelöst wurde.
(und das mit dem nachträglichen löschen - oder gleich in einen Ordner 4mail zu verschieben - mag vielleicht doch eine Rolle spielen)
Bitte warten ..
Mitglied: 48507
27.01.2010 um 12:35 Uhr
Die Angabe, welche PDF verschickt werden soll, kommt aus der Datenbank. Deswegen kann ich nur schwer glauben, dass ich mit einer Schleife auskomme. Aber solche Details kannst du natürlich nicht wissen und ich möchte über diese Kleinigkeiten hier nicht diskutieren, sondern nur eine Lösung der obigen Problembeschreibung. Es muss halt nicht immer wie bei Dr. House sein.
Bitte warten ..
Mitglied: 60730
27.01.2010 um 12:44 Uhr
okokokok...

eine Schleife:

FOR /f %%f IN (%sqltxt%) DO
und
%~nI - Erzeugt nur den Dateinamen von %I.
- wenn man(n) jetzt entweder %%f oder %%i - oder noch einen anderen Buchstaben (immer wieder) in dieser einen Schleife benutzt.
Kann man das glauben oder auch nicht.

ich möchte über diese Kleinigkeiten hier nicht diskutieren,
genauso gehts mir auch - schau doch einfach mal in diesem Forum wie oft dein Problem hier schon gepostet und geBastlat wurde - ich tippe auf 5* mindestens.

Und sorry, das ich dir keine fixundfertige Varianten liefere, aber die gibts schon.
Und das ich dir mit Hilfe zur Selbsthilfe helfen möchte - ist dir auch noch nicht aufgefallen. ;-(
Bitte warten ..
Mitglied: miniversum
27.01.2010 um 13:12 Uhr
Versuchs mal so. Zu erst die Schleife die die Liste der Dateinamen durchgeht die von der DB geliefert werden:
FOR /f %%f IN (%sqltxt%) DO ( )
In dieser Schleife kannst du eine Unterprozedur mit call aufrufen die der für jeden Dateinamen den aktuellen Dateinamen liefert und diesen weiterverarbeitet.
call:Dateisuche "%%f"

In der Dateisuche Prozedur erhälst du diesen Teil als %1. Nun musst du also ein Verzeichniss durchsuchen nach allen Dateien die diesen namen haben RE%1*.pdf und diese Liste nach Datum sortieren.
Das geht mit dem dir Befehl mit entsprechendem Parameter zum Sortieren nach dem Datum.
Wenn du das ganze so sortierst das die aktuellste datei unten steht kannst du diese Liste abarbeiten udn die letzte Datei in eine Variable schreiben
FOR /f %%i IN ('dir RE%1*.pdf /Parameter_selbst_suchen') DO set Dateiname=%%i
Nach dieser Zeile steht also der Dateiname der aktuellsten Version in der Variable %Dateiname%

miniversum
Bitte warten ..
Mitglied: 48507
27.01.2010 um 14:28 Uhr
Astrein! Danke! Und es sind doch zwei Schleifen :-P
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
WENN-DANN für eine bestehende BATCH Datei oder Powershell
gelöst Frage von Komoran12Batch & Shell5 Kommentare

Hallo, ich brauche mal wieder Eure Hilfe, ich komme irgendwie nicht weiter, vielleicht kann mir jemand von Euch helfen: ...

Batch & Shell
Neueste Datei mit Batch suchen
gelöst Frage von thilo-55Batch & Shell4 Kommentare

Ein herzliches Hallo an die Teilnehmer des Forums. Leider komme ich mit meinen batch/dos-Kenntnissen nicht mehr weiter. Evtl. kann ...

Batch & Shell
Alle Dateien aus einem Ordner verarbeiten
gelöst Frage von neo243Batch & Shell2 Kommentare

Hallo Leute, ich wollte aus einem Ordner alle dateien per ffmpeg Encoden bekomme dann aber leider folgenden Fehler: "%~a" ...

Batch & Shell
Ini File mit Batch auslesen und weiter verarbeiten
gelöst Frage von ZendaraBatch & Shell2 Kommentare

Hallo, Ich habe ein Problem mit einem Batch File welches mir Variablen aus einem Ini File auslesen und zB. ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 4 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 11 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 13 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 16 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1017 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...