Keine Ausgabe von FOR-Schleife über Befehl

Keine Ausgabe von FOR-Schleife über Befehl

Ich habe einige Dateien, die ich gerade in mein Git-Repo übertragen habe:

C:\core\guidewire\Release\5.3_MT1\ClaimCenter>git diff --name-only head^^ ClaimCenter/modules/configuration/config/web/pcf/TabBar.pcf ClaimCenter/modules/configuration/config/web/pcf/team/user/TeamUserClaims.pcf ClaimCenter/modules/configuration/gsrc/citizens/cc/pcf_gs/team/TeamTabLastUser.gs

Nun möchte ich die Pfade erfassen und etwas anderes damit machen, aber der git diffBefehl erzeugt keine(?) Zeilen, FOR /Füber die ich iterieren kann:

C:\core\guidewire\Release\5.3_MT1\ClaimCenter>für /f %p in ('git diff --name-only head^^') mache @( echo %p )

C:\core\guidewire\Release\5.3_MT1\ClaimCenter>

Was ist denn hier los?Zuerst dachte ich, es handele sich um einen Fehler in meiner Syntax, aber das Diffraktionsvergleichen mit anderen Zielen funktioniert innerhalb der For-Schleife. Beispielsweise beweist "master^^", dass nicht nur das Escape-Zeichen für Chaos sorgt:

C:\core\guidewire\Release\5.3_MT1\ClaimCenter>für /f %p in ('git diff --name-only master^^') mache @( echo %p ) ClaimCenter/modules/configuration/config/rules/Reopened/ClaimReopened_dir/CRO05000ApplyCustomReopenRule_dir/CRO05010AssignToOriginalAdjuster.gr ClaimCenter/modules/configuration/config/rules/Reopened/ClaimReopened_dir/CRO05000ApplyCustomReopenRule_dir/CRO05030DefaultAssignment.gr ClaimCenter/modules/configuration/config/web/pcf/TabBar.pcf ClaimCenter/modules/configuration/config/web/pcf/team/user/TeamUserClaims.pcf ClaimCenter/Module/Konfiguration/gsrc/Citizens/cc/pcf_gs/Team/TeamTabLastUser.gs

Antwort1

Verwenden Sie doppeltes Escape von „head^“ zu „head^^^^“:

C:\core\guidewire\Release\5.3_MT1\ClaimCenter>für /f %p in ('git diff --name-only head^^^^') mache @(echo %p)
ClaimCenter/modules/configuration/config/web/pcf/TabBar.pcf
ClaimCenter/modules/configuration/config/web/pcf/team/user/TeamUserClaims.pcf
ClaimCenter/modules/configuration/gsrc/citizens/cc/pcf_gs/team/TeamTabLastUser.gs

Wenn CMD den zitierten Befehl ausführt, findet eine zweite Erweiterungsrunde statt, sodass aus und dann ^^wird . Tatsächlich beweist der Testfall, der sich von „master^^“ unterscheidet, nichts, da am Ende keine Zirkumflexe mehr übrig sind. Die ursprüngliche Befehlszeile hat einfach HEAD von HEAD unterschieden, wobei natürlich überhaupt keine Dateien geändert wurden.^

verwandte Informationen