2013-02-05 12 views
6

Non capisco il comportamento del comando COPY quando si utilizza un carattere jolly.L'utilizzo di wildard con il comando DOS COPY danneggia il file di destinazione

Ho un singolo file di testo in C:\Source chiamato mpt*.asm e voglio copiarlo in C:\Dest. Questo è necessario da uno script batch e non posso essere sicuro del nome esatto di mpt*.asm (potrebbe essere mpt001.asm ad esempio). Il nome della destinazione dovrebbe essere esattamente mpt.asm.

se uso:

COPY C:\Source\mpt*.asm C:\Dest\mpt.asm 

Il file file viene copiato, ma ha un (0x1A) carattere aggiuntivo aggiunto alla fine del file.

se uso:

COPY C:\Source\mpt*.asm C:\Dest\mpt.asm /B 

Non capisco questo carattere spurio.

Se non utilizzo un carattere jolly, non ottengo neanche il carattere spuria. Sembra improbabile che ci sia un bug in COPY, ma questo comportamento sembra inaspettato.

C'è un modo per fare questa copia senza ricorrere all'utilizzo di /B?

risposta

5

Non l'ho mai visto prima, ma aggiunge un carattere freccia extra anche a me.

È possibile risolvere il problema utilizzando xcopy.

echo f| xcopy C:\Source\mpt*.asm C:\Dest\mpt.asm 

Se leggete copy /? si dice

Per aggiungere file, specificare un unico file per destinazione, ma più file per la sorgente (usando caratteri jolly o file1 + file2 + file3 formato).

Quindi, utilizzando un singolo nome di file come il dest, e utilizzando un carattere jolly nella fonte, si può interpretare tale esempio aggiungere, che può essere quello che il personaggio in più è per, ma come non sono aggiungendo nulla Puoi vederlo.

Sto solo supponendo, ma questo potrebbe spiegarlo.

+0

Hai ragione, questo è dovuto al fatto che 'copia' funziona in modalità append. Il carattere extra 1A viene dal DOS; era necessario per contrassegnare EOF su file di testo. '/ B' specifica i file binari che evitano il problema. http://www.tech-archive.net/Archive/Win2000/microsoft.public.win2000.cmdprompt.admin/2009-08/msg00010.html – sourcejedi