Por que a opção / f do xcopy afeta os espaços em arquivos excluídos?

0

Eu usei esta pergunta e recebi uma resposta que parecia como se não pudesse estar certo, mas eu tentei e funcionou!

Como poderia a opção /f , que de acordo com a documentação :

Displays full source and destination file names while copying

possivelmente causa que espaços sejam reconhecidos no arquivo EXCLUDE ?! Este efeito parece totalmente não relacionado à finalidade de /f !

    
por JoelFan 03.06.2011 / 17:20

2 respostas

1

Parece que o / f não afeta apenas a exibição, mas também os dados do nome do arquivo que estão sendo usados para correspondência contra as cadeias de caracteres de exclusão. Talvez você esteja sendo excessivamente rigoroso em sua interpretação de "display" :-).

Mas, sério, lembre-se de que os redatores de documentação nem sempre podem prever as maneiras pelas quais diferentes opções podem interagir no uso de sua ferramenta. Em outras palavras, esse comportamento pode não ser intencional, mas funciona mesmo assim.

    
por 03.06.2011 / 17:51
1

Eu era o único a dar-lhe a resposta anterior e você está pensando sobre isso da maneira errada. O sinalizador / f não afeta como um espaço é manipulado, mas como os caminhos são manipulados.

Se você executar o xcopy sem o sinalizador / f, verá que ele funciona nos arquivos relativos ao diretório de trabalho ou aos caminhos que você forneceu. Aparentemente isso também é usado pela lógica interna do xcopy, então quando você o executa por padrão, ele só pode filtrar as partes do caminho que você especificou no comando copy.

Quando você adiciona o sinalizador / f, xcopy exibirá o caminho completo do arquivo, independentemente de como você chamou a cópia. Como isso parece afetar a lógica interna, isso também torna possível filtrar o caminho completo do arquivo e não apenas os caminhos relativos.

Isso não é explicado na documentação atual do xcopy, o que leva você a acreditar que afeta apenas a exibição e não a lógica interna.

Você pode testar isso por si mesmo com o seguinte.

Crie uma pasta c: \ unicorns e uma pasta c: \ ponys Na pasta unicórnios, crie três arquivos: test1.txt, test2.txt e exclude.txt Edite exclude.txt e cole o seguinte

test1.txt
c:\unicorns\test2.txt

Vá para c: \ unicorns e execute o comando

xcopy *.txt ..\ponys /exclude:exclude.txt

Você verá que copia test2.txt e exclude.txt Agora adicione o sinalizador / f da seguinte forma

xcopy /f *.txt ..\ponys /exclude:exclude.txt

Você notará que apenas copia exclude.txt desta vez.

Neste exemplo, nosso diretório de trabalho era c: \ unicorns e, portanto, os nomes exibidos continham apenas os nomes dos arquivos.

Podemos continuar com isso e mostrar o que acontece se você usar caminhos absolutos. Use a mesma configuração de diretórios de antes e execute o comando

xcopy c:\unicorns\*.txt c:\ponys /exclude:c:\unicorns\exclude.txt

Agora você pode ver que o único arquivo copiado é exclude.txt. Ao dar os caminhos absolutos ao comando, eles são usados na lógica interna e podem ser filtrados.

Se você tentar isso com o sinalizador / f, perceberá que eles funcionam da mesma forma

xcopy /f c:\unicorns\*.txt c:\ponys /exclude:c:\unicorns\exclude.txt

Espero que isso forneça uma explicação clara de como isso funciona atualmente.

    
por 03.06.2011 / 18:01