Cách sao chép tập tin chứa | trong tên?


4

Trong Windows 7, tôi không thể sao chép tệp với | trong tên Cung cấp cho tôi một lỗi Can not find the file. Tôi có khoảng 30 GB tệp và tất cả đều chứa ký tự đó. Bất kỳ ý tưởng làm thế nào tôi có thể sao chép chúng vào một phân vùng NTFS khác?


Làm thế nào bạn tạo ra những tập tin ở nơi đầu tiên?
Dennis

Tải về từ torrent.
Pablo

Bạn vẫn có torrent? Nếu bạn làm như vậy, hãy sử dụng máy khách torrent và di chuyển bộ lưu trữ, vì rõ ràng nó có thể xử lý các tên tệp không đúng này.
Dennis

Không, thật không may, tôi không đăng ký torrent như vậy nữa, tôi cũng không có Linux để di chuyển các tệp đó (Tôi nhớ tôi đã chuyển chúng từ phân vùng Ubuntu sang Windows 7).
Pablo

1
gắn các ổ đĩa với linux liveCD / USB sẽ là một giải pháp nhanh chóng và sạch sẽ, nhưng tôi tự hỏi liệu có cách nào để làm điều đó chỉ từ các cửa sổ không? Tôi vừa thử tạo một tập tin với | trong đó từ máy linux của tôi trên máy tính windows và nó mắng tôi. Tải xuống từ máy chủ https đang chạy trên netbook của tôi cũng không hoạt động, nó đã thay đổi | đến một -. Có thể thử di chuyển chúng với dấu nhắc lệnh và tên ngắn? dir /x sẽ liệt kê tên ngắn mà bạn có thể sử dụng.
Rob

Câu trả lời:


11

Dòng lệnh là bạn của bạn.

Mở một CMDCD đến vị trí của các tập tin.

Đi vào dir /X và điều này sẽ cho bạn thấy các tên DOS 8.3 cũ với ~1, ~2 vv cùng với tên tệp dài.

Sau đó, bạn có thể sao chép / đổi tên bằng tên 8.3

Bạn có thể trộn tên tệp 8.3 và dài khi đổi tên:

ren THISIS~1.TXT "this is renamed.txt" sẽ làm việc

enter image description here


1
Yêu ý tưởng này, miễn là tên tệp có hơn 8 ký tự. Đó là giải pháp cửa sổ đầu tiên tôi nghĩ đến.
Rob

2
@Rob ngay cả khi tên tệp nhỏ hơn 8 ký tự, tôi tin rằng nó sẽ cung cấp một giải pháp thay thế để sử dụng trong trường hợp có ký tự bất hợp pháp, Thật khó để kiểm tra tho!
Shevek

Tôi tự hỏi nếu bạn có thể làm điều tương tự với tên tệp được trích dẫn. tức là tên tập tin "tập tin | tên"
Matt H

1
@MattH Tôi không suy nghĩ vì vậy nó vẫn là một ký tự không hợp lệ cho tên tệp Windows. Một lần nữa, rất khó kiểm tra vì rất khó để tạo các tệp có ký tự đó trong tên tệp!
Shevek

4

Các \\?\ tiền tố nói với Windows rằng đường dẫn của bạn hoàn toàn tốt và bạn không muốn làm gì với nó. Điều đó có nghĩa là nó ít tha thứ hơn. Ví dụ. dir "\\?\C:" không hoạt động. Con đường đúng là dir "\\?\C:\".

Điều này sẽ giúp bạn bỏ qua các hạn chế về việc sử dụng | trong tên tệp NTFS. Tuy nhiên, bạn vẫn nên trích dẫn tên tệp để CMD.EXE không diễn giải |.


1

Các ký tự không hợp lệ trong tên tệp sẽ gây ra sự cố sớm hơn sau này. Tôi khuyên bạn nên đổi tên tất cả các tệp để tránh sự cố thêm.

Điều này sẽ hoạt động (nhưng chưa được kiểm tra):

  1. Tải về Ubuntu và ghi CD Live.

  2. Khởi động từ đĩa CD trực tiếp.

  3. Mở một thiết bị đầu cuối, đi đến thư mục chứa các tệp lẻ và thực hiện

    find . | grep "|" | awk '{ OLD=$0; gsub(/\|/, "_"); print "mv \"" OLD "\" \"" $0 "\"" }' | sh
    

Điều đó sẽ thay thế tất cả | s với _ S.


Tôi biết có một cách dễ dàng hơn để làm điều đó hơn với awk, nhưng điều đó sẽ hiệu quả. Hãy để tôi ssh vào máy linux của tôi và xem nếu nó vẫn còn trong lịch sử bash của tôi.
Rob

1
cho f trong *; làm mv "$ f" "$ (tiếng vang $ f | tr '|' '_')"; làm xong
Rob

1
@Rob: Đó dễ dàng hơn Tôi đã thay đổi một chút để nó hoạt động với các thư mục con và không in thông báo lỗi khi nguồn và đích giống hệt nhau.
Dennis

1
thay đổi nó thành for f in "$(find . | grep '|')"; hoặc nó sẽ gây rối với các tập tin có khoảng trắng.
Rob

1
Yêu ý tưởng rằng bạn phải tải xuống một hệ điều hành khác để sửa lỗi windows.
Matt H

0

Tôi sẽ đề nghị điều tương tự như Dennis. Có nhiều ứng dụng có sẵn cho các cửa sổ cũng vậy, nhưng tôi không biết họ sẽ đổi tên các tệp với ký tự "không hợp lệ" tốt đến mức nào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.