2013-02-05 23 views
6

Joker karakter kullanırken COPY komutunun davranışını anlamıyorum.DOS KOPYALA komutuyla wildard'ın kullanılması hedef dosyasını yozlaştırır

mpt*.asm adlı C:\Source numaralı tek bir metin dosyanız var ve bu dosyayı C:\Dest kopyalamak istiyorum. Bu bir toplu iş komut dosyası için gereklidir ve mpt*.asm tam adını bilmiyorum (örneğin mpt001.asm olabilir). Hedef adı tam olarak mpt.asm olmalıdır.

Ben kullanıyorsanız:

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

dosya dosya kopyalanmış ama dosyanın sonuna eklenen bir ekstra (0x1A) karakteri vardır.

Ben kullanıyorsanız:

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

bu sahte karakterini alamadım.

Joker kullanmazsam, sahte karakteri de alamıyorum. COPY'da bir hata olması olası görünmüyor, ancak bu davranış beklenmedik görünüyor.

/B'u kullanmaya başvurmadan bu kopyayı yapmanın bir yolu var mı?

cevap

5

Bunu daha önce hiç görmemiştim, ama benim için de fazladan bir ok karakteri ekliyor.

Bunun yerine xcopy kullanarak sorunu çözebilirsiniz.

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

Eğer copy /? okursanız o

, dosyaları eklemek için, hedef için tek dosya, ancak To diyor birden fazla dosya kaynağı için (joker karakterler veya dosya1 + dosya2 + dosya3 biçimini kullanarak).

Yani dest gibi tek dosya adı kullanılarak ve kaynağındaki bir joker kullanarak, ekstra karakter için ne olabilen ekleme olarak bu yorumlayabilir, ama bir şey eklemediğinizden olarak onu görebilirsin.

Sadece tahmin ediyorum ama bunu açıklayabilir.

+0

Haklısınız, bu, "kopya" eklenti modunda çalışmasından kaynaklanıyor. Ekstra 1A karakteri DOS'tan gelir; Metin dosyalarında EOF işaretlemek için gerekliydi. '/ B', sorunu önleyen ikili dosyaları belirtir. http://www.tech-archive.net/Archive/Win2000/microsoft.public.win2000.cmdprompt.admin/2009-08/msg00010.html – sourcejedi