Nenhuma saída do comando FOR loop over

1

Eu tenho alguns arquivos que acabei de confirmar no meu repositório do git:

C:\core\guidewire\Release.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 comando git diff não produz (?) nenhuma linha para FOR /F para iterar:

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

C:\core\guidewire\Release.3_MT1\ClaimCenter>

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

C:\core\guidewire\Release.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 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

    
por gws 10.10.2018 / 23:45

1 resposta

0

Double-escape "head ^" para "head ^^^^" :

C:\core\guidewire\Release.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 entre aspas, ocorre uma segunda rodada de expansão, de modo que ^^ se torne ^ e, em seguida, . Na verdade, o caso de teste que difere contra "master ^^" não prova nada, uma vez que acaba sem nenhum carinho. A linha de comando original simplesmente diferiu HEAD contra HEAD, o que obviamente não tem arquivos alterados.

    
por 11.10.2018 / 23:17

Tags