2013-02-05 33 views
6

Tôi không hiểu hành vi của lệnh COPY khi sử dụng ký tự đại diện.Sử dụng lệnh wildard với lệnh DOS COPY làm hỏng tệp đích

Tôi có một tập tin văn bản duy nhất trong C:\Source gọi mpt*.asm và tôi muốn sao chép nó vào C:\Dest. Điều này là cần thiết từ tập lệnh theo lô và tôi không thể chắc chắn tên chính xác của mpt*.asm (ví dụ: có thể là mpt001.asm). Tên đích phải chính xác là mpt.asm.

Nếu tôi sử dụng:

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

Các tập tin tập tin được sao chép, nhưng có một phụ (0x1A) nhân vật nối vào cuối của tập tin.

Nếu tôi sử dụng:

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

Tôi không nhận được nhân vật giả mạo này.

Nếu tôi không sử dụng ký tự đại diện, tôi cũng không nhận được ký tự giả mạo. Có vẻ như không có lỗi trong số COPY, nhưng hành vi này có vẻ không mong muốn.

Có cách nào để thực hiện bản sao này mà không cần sử dụng /B không?

Trả lời

5

Tôi chưa bao giờ thấy điều đó trước đây, nhưng nó cũng gắn thêm một ký tự mũi tên cho tôi nữa.

Thay vào đó, bạn có thể giải quyết vấn đề bằng cách sử dụng xcopy.

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

Nếu bạn đọc copy /? nó nói

Để thêm các tập tin, chỉ định một tập tin duy nhất cho đích, nhưng nhiều file cho nguồn (sử dụng ký tự đại diện hoặc file1 file2 + + file3 định dạng).

Vì vậy, bằng cách sử dụng một tên tệp đơn lẻ, và sử dụng ký tự đại diện trong nguồn, nó có thể giải thích là phụ thêm, có thể là ký tự thừa, nhưng khi bạn không thêm bất kỳ thứ gì bạn có thể nhìn thấy nó.

Tôi chỉ đoán nhưng điều đó có thể giải thích được.

+0

Bạn nói đúng, điều này là do 'bản sao' hoạt động trong chế độ nối thêm. Các nhân vật 1A thêm đến từ DOS; nó được sử dụng là cần thiết để đánh dấu EOF trên các tập tin văn bản. '/ B' chỉ định các tệp nhị phân tránh được sự cố. http://www.tech-archive.net/Archive/Win2000/microsoft.public.win2000.cmdprompt.admin/2009-08/msg00010.html – sourcejedi

Các vấn đề liên quan