lucedeciello
Goto Top

BATCH tempfile in for Schleife umbenennen

Hallo,

ich stehe gerade mal wieder etwas auf dem Schlauch. Folgende Problemstellung:
Es werden mehrere csv-files nacheinander eingelesen und bei einem bestimmter Eintrag soll die ganze Zeile raus. Aber der ursprüngliche Dateiname soll beibehalten werden.

Bisher habe ich folgendes geschrieben und auch schon ein paar Sachen ausprobiert:

set WORKDIR=C:\test_SG\multifile\
set WORKFILE=*_LA.csv

(for %%a in (%WORKDIR%%WORKFILE%) do (

find /v /i ";-0,00;" %%a >> %%a.tmp


))

Wie bekomme ich es nun hin den ursprünglichen Dateinamen wiederherzustellen???

Viele Grüße
Luce

Content-Key: 346056

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

Printed on: April 19, 2024 at 04:04 o'clock

Mitglied: 133883
133883 Aug 11, 2017 updated at 16:27:55 (UTC)
Goto Top
Nach deinem find lösche die Original-Datei und dann benenne die temporär erstellte Datei um in die Original-Datei.
Nur den Dateinamen der Original-Datei ("Dateiname.csv") erhältst du in der Schleife mit mit:
%%~nxa

Gruß
Member: LuceDeCiello
LuceDeCiello Aug 11, 2017 at 17:46:36 (UTC)
Goto Top
Vielen Dank schonmal ... kann es jetzt leider nicht testen. Aber wenn ich dich richtig verstehe sollte es dann folgend aussehen:

(for %%a in (%WORKDIR%%WORKFILE%) do (

find /v /i ";-0,00;" %%a >> %%a.tmp
del %%a
rename %%a.tmp %%~nxa


))

Was genau hat es mit %%~nxa auf sich? Habe ich bisher nirgends etwas von gelesen!
Mitglied: 133883
133883 Aug 11, 2017 updated at 17:51:44 (UTC)
Goto Top
Zitat von @LuceDeCiello:
Was genau hat es mit %%~nxa auf sich? Habe ich bisher nirgends etwas von gelesen!
for /? in die Konsole eingeben, ganz unten steht wie sich die Expansion zusammensetzt.

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.
Und bitte immer mit Anführungszeichen um Dateinamen und Pfade arbeiten, denn sonst bekommst du Probleme wenn deine Dateinamen Leerzeichen beinhalten!!
Member: LuceDeCiello
LuceDeCiello Aug 11, 2017 at 18:02:55 (UTC)
Goto Top
LOL - daran habe ich in der Tat nicht gedacht. Lösungen können manchmal viel näher sein als man denkt. Wenn ich Dir jetzt schreiben würde welche komplizierten Lösungsansätze ich mit meinem rudimentären Kenntnissen versucht habe umzusetzen.... Du würdest den ganzen Abend etwas zu lachen haben face-smile

Vielen Dank nochmal.