Nenhuma saída do comando FOR loop over

Nenhuma saída do comando FOR loop over

Tenho alguns arquivos que acabei de enviar em meu repositório git:

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

Agora quero capturar os caminhos e fazer outra coisa com eles, mas o git diffcomando não produz (?) nenhuma linha para FOR /Fiterar:

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

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

O que está acontecendo aqui?No começo eu esperava que houvesse algum erro na minha sintaxe, mas a comparação com outros alvos funciona dentro do loop for. Por exemplo, "master^^" prova que não é apenas o personagem de fuga causando estragos:

C:\core\guidewire\Release\5.3_MT1\ClaimCenter>for /f %p in ('git diff --name-only master^^') do @( 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/ configuração/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

Responder1

Escape duplo de "head^" para "head^^^^":

C:\core\guidewire\Release\5.3_MT1\ClaimCenter>for /f %p in ('git diff --name-only head^^^^') do @(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

Quando o CMD executa o comando citado, ocorre uma segunda rodada de expansão, então ^^se torna ^e então . Na verdade, o caso de teste comparado com "master^^" não prova nada, pois termina sem nenhum sinal de intercalação. A linha de comando original simplesmente diferenciou HEAD de HEAD, que obviamente não possui nenhum arquivo alterado.

informação relacionada