Sie haben 2 Probleme:
1) Sie verwechseln FOR-Variablen mit Umgebungsvariablen. Eine Charge für Variablenname ist immer ein einzelnes Zeichen, und es ist der Zugang über 2 Prozent vor dem Namen: %%c
. Ein FOR-Variablenwert kann nicht mit SET geändert werden.
Eine Umgebungsvariable Name kann mehrere Zeichen enthalten, obwohl es ein einzelnes Zeichen sein kann, und es wird durch Einschließen des Namens in Prozenten zugegriffen: %var%
. Ausrufungszeichen verwendet werden, wenn Sie verzögerten Expansion wollen: !var!
. Ein Umgebungsvariablenwert wird mit SET eingestellt.
2) Der CALL-Trick, um auf Umgebungsvariablenwerte zuzugreifen, die in einem geklammerten Codeblock festgelegt wurden, wird zur Erweiterungszeit verwendet, nicht wenn Sie den Wert festlegen.
Ich glaube, dass Mousio die beste Antwort geliefert hat. Ich verwende immer eine verzögerte Erweiterung wie in dieser Antwort. Sie können jedoch ohne Verzögerung eine Erweiterung ausführen, indem Sie eine Umgebungsvariable und den CALL-Trick verwenden.
@echo off for /f "tokens=1-3 delims=," %%a in (Puck.csv) do ( echo Hello No Hockey>%%a.txt echo #:A %%a>>%%a.txt echo #:B %%b>>%%a.txt set C=%%c if /i %%c gtr 10 set C=1 call echo #:C %%C%%>>%%a.txt )
Beachten Sie, dass es entscheidend ist, dass sich die FOR-Variable von der Umgebungsvariablen unterscheidet. FOR-Variablen unterscheiden zwischen Groß- und Kleinschreibung, Umgebungsvariablen nicht. Wenn Sie c
für beide verwenden, wird der Parser %%c%%
als FOR-Variable behandelt, gefolgt von einem Prozentwert - und nicht dem, was Sie möchten.