Ich habe zwei. Txt-Dateien. Einer enthält Zahlen und der andere enthält Dateipfade. Ich möchte diese beiden Dateien zu einer .csv kombinieren. Die Kombination basiert darauf, ob sich die Zahl (aus nrs.txt) in der Zeichenfolge des Dateipfads (nodups.txt) befindet.Verschachtelt/F-Schleife und If-Anweisungen in der Batch-Datei
Jetzt habe ich den folgenden Code dafür:
@setlocal enableextensions enabledelayedexpansion
for /F %a IN (Output\nrs.txt) DO (
SET "nrs=%a"
for /F %b IN (Output\nodups.txt) DO (
SET "pathstring=%b"
SET csvdelim=,
IF NOT x!pathstring:%nrs%=""!==x%pathstring% %nrs%,%pathstring%>>new2017.txt
)
)
@endlocal
Allerdings halte ich mit dem Code die folgenden Probleme mit:
- Die pathstring scheint nie eingestellt werden. (Wenn ich den Code ohne die if-Anweisung ausführe, wird die Variable
nrs
gesetzt, aberthe pathstring is set to %b
). Ich habe hier schon viele mögliche Lösungen gesehen, aber keine scheint für mich zu funktionieren (Variablen wie!var!
setzen undusebackq
verwenden). - Die IF-Anweisung in der zweiten for-Schleife erhält folgende Fehlermeldung
=""!==x%pathstring% was unexpected at this time
. Die=""
sollte die nr entfernen. vom Weg (wenn es da ist). Wenn ich "" durch etwas anderes ersetze, funktioniert es immer noch nicht.
Der Inhalt der Datei sind:
Datei nrs.txt:
12345
12245
16532
nodubs.txt:
C:\tmp\PDF_16532_20170405.pdf
C:\tmp\PDF_1234AB_20170405.pdf
C:\tmp\PDF_12345_20170506.pdf
gewünschte Ausgabe:
12345, C:\tmp\PDF_12345_20170506.pdf
16532, C:\tmp\PDF_16532_20170405.pdf
Ich hoffe wirklich, dass mir jemand dabei helfen kann!
Ich bevorzuge diese Lösung, da es für mich klarer ist, wie es funktioniert (und wenn sich überhaupt etwas ändert, weiß ich, wo ich Anpassungen vornehmen muss). Wenn ich es jedoch so ausführe, bekomme ich keine Ausgabe. Wenn ich das '@echo off' entferne, bekomme ich folgendes: ' C: \ Pfad \ Ausgabe> (falls definiert nodubs [12345] echo 12345,! Nodubs [12345]!) C: \ Pfad \ Ausgabe> (falls definiert nodubs [12245] echo 12245,! nodubs [12245]!) C: \ Pfad \ Ausgabe> (falls definiert nodubs [16532] echo 16532,! nodubs [16532]!) ' – Coen
Sie können die Klammern entfernen das die Umleitung und die Umleitung umgibt, das heißt, ändern Sie '(für ...))> new2017.txt' durch' für ...) 'und fügen Sie dann die' >> new2017.txt' Umleitung am Ende von 'echo ein %% a, ... 'Zeile. – Aacini
Vielen Dank! – Coen