darkatohm
Goto Top

Batch-Skript um herauszufinden ob zugehörige Index-Datei im Verzeichnis existiert

Hallo zusammen,

folgendes möchte ich herausfinden:

In einem Verzeichnis (C:\Temp\Alle) liegen zu einem Beleg drei verschiedene Dateien:

Beleg.pdf
Beleg.jpl
Beleg.ocr


Nun fehlen bei einigen Beleg.pdf die zugehörige JPL-Dateien.
Die JPL-Datei hat immer jeweils den gleichen Dateinamen wie die PDF-Datei.

Jetzt möchte ich herausfinden, bei welchen PDF-Belegen die JPL-Datei fehlt und diese Belege alle in ein anderes Verzeichnis (z.B. nach C:Temp\Fehler) verschieben.

Wie könnte so ein Batch Skript aussehen? face-smile
Vielen Dank im Voraus!

Content-Key: 337498

Url: https://administrator.de/contentid/337498

Printed on: April 23, 2024 at 07:04 o'clock

Mitglied: 132895
132895 May 11, 2017 updated at 14:32:18 (UTC)
Goto Top
@echo off
for %%a in ("c:\Temp\alle\*.pdf") do (  
  if not exist "%%~dpna.jpl" move "%%a" "c:\temp\fehler"  
)
Gruß
Member: Darkatohm
Darkatohm May 11, 2017 at 14:19:04 (UTC)
Goto Top
Vielen Dank schon mal, aber es werden trotzdem alle PDFs verschoben, auch wenn eine JPL-Datei mit dem gleichen Dateinamen im Verzeichnis vorhanden ist.
Was bedeutet "%%dpna.jpl"? Wenn %%a die Variable für den Dateinamen ist, müsste es dann nicht %%a.jpl heißen?
Mitglied: 132895
132895 May 11, 2017 updated at 14:37:13 (UTC)
Goto Top
Sorry, Tippfehler, ist oben korrigiert.
Was bedeutet "%%dpna.jpl"? Wenn %%a die Variable für den Dateinamen ist, müsste es dann nicht %%a.jpl heißen?
Nein! Wie gesagt ein Tippfehler von mir, die Tilde (~) fehlte ...
ein for /? sagts dir

Mit %%~dpna bekommst du den LW Buchstaben (d), den Pfad (p) und den Namen der Datei (n) ohne Dateierweiterung, und an das hängt man noch das .jpl an, fertig.
Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie können jetzt folgende Syntax verwenden:

    %~I         - Expandiert %I und entfernt alle umschließenden
                   Anführungszeichen (").
    %~fI        - Expandiert %I zu einem vollständigen Dateinamen.
    %~dI        - erstellt nur den Laufwerkbuchstaben von %I.
    %~pI        - erstellt nur den Pfad von %I.
    %~nI        - erstellt nur den Dateinamen von %I.
    %~xI        - erstellt nur die Dateierweiterung von %I.
    %~sI        - erstellter Pfad enthält nur kurze Dateinamen.
    %~aI        - erstellt die Dateiattribute von %I.
    %~tI        - erstellt Datum und Zeit von %I.
    %~zI        - erstellt die Dateigröße von %I.
    %~$PATH:I   - Durchsucht die in der PATH-Umgebungsvariablen
                   angegebenen Verzeichnisse und expandiert die erste
                   gefundene Datei %I zu dem vollständigen Dateinamen.
                   Wenn der Name der Umgebungsvariablen nicht definiert
                   ist oder diese Datei bei der Suche nicht gefunden wurde,
                   wird dieser Parameter zu einer leeren Zeichenfolge
                   expandiert.

Diese Parameter können auch miteinander kombiniert werden:

    %~dpI       - erstellt den Laufwerkbuchstaben und Pfad von %I.
    %~nxI       - erstellt den Dateinamen und die Dateierweiterung von %I.
    %~fsI       - Expandiert %I zu einem vollständigen Namen, der nur
                   kurze Dateinamen enthält.
    %~dp$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
                   angegebenen Verzeichnisse nach %I und erstellt den
                   Laufwerkbuchstaben und Pfad der ersten gefundenen Datei.
    %~ftzaI     - Expandiert %I zu einer Zeile, die der Ausgabe des DIR-
                   Befehls entspricht.