Wie verschachtelte FOR-Schleifen in batch-Dateien

Ich habe einige code in das ich möchte an einem FOR - Schleife zum verarbeiten eines Satzes von Dateien.
Als Teil der Behandlung einer Datei gibt es eine FOR /F - Schleife, liest es und fügt Daten an eine andere Datei basierend auf dem Dateinamen.

Um der Lage sein, um die Ausgabe-Datei Namen habe, verzögerte Erweiterung von Umgebungsvariablen gesetzt, die auf.

Dies ist, was der code Aussehen sollte, wie ich ursprünglich beabsichtigte, es zu sein:

setlocal enabledelayedexpansion
for %%f in (DataFolder\*.Ext) do (
    set POI=%%~f
    set POI=!JbPOI:DataFolder\=!
    set POI=!JbPOI:.Ext=!
    for /f  "tokens=1,2,3 delims=," %%a in ("%%~f") do (
        set CX=%%a
        set CY=%%b
        set FN=%%c
        echo !FN!,9,!CX!,!CY! >> "DataFolder\!POI!.tmp"
    )
)
endlocal

Dieser code funktioniert nicht weil die variable %%a, %%b und %%c nie erhalten, ein Wert, %%a immer den gleichen Wert hat wie %%f.

Las ich einige Artikel über dieses Problem, aber konnte nicht extrahieren, die eine Lösung von Sie, arbeitete.

Ich habe versucht, verschiedene Dinge, keines funktionierte so weit...

  • Hinzugefügt dummy äußeren Schleife zu erstellen, die variable %%a durch %%j explizit
  • innere FOR Schleife herausgenommen und machte es zu einem Unterprogramm
  • innere FOR Schleife herausgenommen und machte es zu einem separaten batch-Datei

Kann jemand mir bitte sagen, wie das gehen kann - oder muss - gelöst werden?

  • Ich würde sagen die einfachste Lösung ist die Installation von Python und schreiben, ein kleines Python-Skript für Sie. Oder wirklich jede andere Sprache außer MS batch.
  • wollen Sie zum Lesen der Inhalte der Datei %%~f oder Ihren Namen als string.Denn jetzt bist du es als string.
  • Die Datei %%f ist zu Lesen ... Wenn es behandelt wird wie ein string in dieser Art und Weise: das macht Sinn erklären, warum %%a hat immer tha gleiche Wert wie bei %%f". Ich werde noch einige Tests durchführen ...
  • Die option usebackq haben die ganze Arbeit! Die innere Schleife war die Behandlung der zitierten Datei-name als string, statt eine Datei zu Lesen. Vielen Dank, npocmaka!
InformationsquelleAutor Jaap Bregman | 2014-11-23
Schreibe einen Kommentar