Vẫn gặp khó khăn với XCOPY


0

Nhờ câu trả lời này Đường dẫn không hợp lệ bằng XCOPY của DavidPostill , tôi đã nhận được mọi thứ tốt hơn một chút:

set/P Drive= Enter destination drive (with colon):
echo %Drive%
:: 
set BACKUPCMD=xcopy 
set BACKUPOPTIONS=/S /D /I /Y /Q /C /T 
:: ----------------------------------------------
:: Use WMIC to retrieve date and time
::
FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get   Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
IF "%%~L"=="" goto s_done
  Set _year=%%L
  Set _month=00%%J
  Set _day=00%%G
  Set _hour=00%%H
  SET _minute=00%%I
)
:s_done

:: Pad digits with leading zeros
  Set _month=%_month:~-2%
  Set _day=%_day:~-2%
  Set _hour=%_hour:~-2%
  Set _minute=%_minute:~-2%

Set _date=%_year%-%_month%-%_day% %_hour%:%_minute%
Echo point 1 %_date%
pause
::
:: _______Backup Operations _______________________
::
set directory=TEST
set source=%directory%
set destination=%Drive%\ARCHIVE_%_date%\%directory%

echo %BACKUPCMD% "C:\%source%\*.*" "%destination%" %BACKUPOPTIONS%
echo point 2
%BACKUPCMD% "C:\%source%\*.*" "%destination%" %BACKUPOPTIONS%
echo point 3

Đây là những gì tôi thấy:

nhập mô tả hình ảnh ở đây

Câu trả lời:


0

Dấu hai chấm (":") trong dấu thời gian là ký tự không hợp lệ trong thành phần đường dẫn sau ký tự ổ đĩa (vì lý do rõ ràng). Tôi sẽ cắt nó hoàn toàn để làm cho nó phù hợp trong một con đường.


0

Vẫn gặp khó khăn với XCOPY

Set _date=%_year%-%_month%-%_day% %_hour%:%_minute%

...

set destination=%Drive%\ARCHIVE_%_date%\%directory%

Bạn đang cố gắng tạo một tên thư mục có chứa một :ký tự. Điều đó không được phép.

Bạn không thể sử dụng bất kỳ ký tự dành riêng nào sau đây như một phần của thư mục hoặc tên tệp:

< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)

Bạn cần nghĩ ra một cách khác để đặt tên cho thư mục đích của bạn.


Quy ước đặt tên

Các quy tắc cơ bản sau đây cho phép các ứng dụng tạo và xử lý tên hợp lệ cho tệp và thư mục, bất kể hệ thống tệp:

  • Sử dụng dấu chấm để tách tên tệp cơ sở khỏi phần mở rộng trong tên của thư mục hoặc tệp.
  • Sử dụng dấu gạch chéo ngược ( \) để phân tách các thành phần của đường dẫn. Dấu gạch chéo ngược chia tên tệp từ đường dẫn đến nó và một tên thư mục từ một tên thư mục khác trong một đường dẫn. Bạn không thể sử dụng dấu gạch chéo ngược trong tên cho tệp hoặc thư mục thực tế vì đây là ký tự dành riêng phân tách tên thành các thành phần.
  • Sử dụng dấu gạch chéo ngược theo yêu cầu như một phần của tên khối lượng, ví dụ: tên C:\trong C:\path\filehoặc \\server\sharetrong \\server\share\path\filetên Công ước đặt tên phổ quát (UNC). Để biết thêm thông tin về tên UNC, hãy xem phần Giới hạn độ dài đường dẫn tối đa.
  • Đừng giả sử trường hợp nhạy cảm. Ví dụ: coi các tên OSCAR, Oscar và oscar giống nhau, mặc dù một số hệ thống tệp (như hệ thống tệp tuân thủ POSIX) có thể coi chúng là khác nhau. Lưu ý rằng NTFS hỗ trợ ngữ nghĩa POSIX cho độ nhạy trường hợp nhưng đây không phải là hành vi mặc định. Để biết thêm thông tin, hãy xem CreatFile.
  • Chỉ định âm lượng (ký tự ổ đĩa) không phân biệt chữ hoa chữ thường. Ví dụ: "D: \" và "d: \" đề cập đến cùng một âm lượng.

  • Sử dụng bất kỳ ký tự nào trong trang mã hiện tại cho một tên, bao gồm các ký tự và ký tự Unicode trong bộ ký tự mở rộng (128 nhiệt255), ngoại trừ các ký tự sau:

    Các ký tự dành riêng sau:

        < (less than)
        > (greater than)
        : (colon)
        " (double quote)
        / (forward slash)
        \ (backslash)
        | (vertical bar or pipe)
        ? (question mark)
        * (asterisk)
    
    • Giá trị nguyên bằng 0, đôi khi được gọi là ký tự ASCII NUL.

    • Các ký tự có biểu diễn số nguyên nằm trong phạm vi từ 1 đến 31, ngoại trừ các luồng dữ liệu thay thế nơi các ký tự này được cho phép. Để biết thêm thông tin về các luồng tệp, hãy xem Luồng tệp.

    • Bất kỳ ký tự nào khác mà hệ thống tệp đích không cho phép.

  • Sử dụng dấu chấm làm thành phần thư mục trong đường dẫn để biểu thị thư mục hiện tại, ví dụ ". \ Tempp.txt". Để biết thêm thông tin, xem Đường dẫn.

  • Sử dụng hai dấu chấm liên tiếp (..) làm thành phần thư mục trong một đường dẫn để thể hiện cha mẹ của thư mục hiện tại, ví dụ ".. \ temp.txt". Để biết thêm thông tin, xem Đường dẫn.

  • Không sử dụng các tên dành riêng sau đây cho tên của tệp:

    CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT8, LPT Cũng tránh những tên này theo sau bởi một phần mở rộng; ví dụ: NUL.txt không được khuyến nghị. Để biết thêm thông tin, xem Không gian tên.

  • Không kết thúc tên tệp hoặc thư mục bằng dấu cách hoặc dấu chấm. Mặc dù hệ thống tệp cơ bản có thể hỗ trợ các tên như vậy, nhưng Windows shell và giao diện người dùng thì không. Tuy nhiên, có thể chấp nhận chỉ định một khoảng thời gian là ký tự đầu tiên của tên. Ví dụ: ".temp".

Nguồn đặt tên tệp, đường dẫn và không gian tên


Tôi xin lỗi, tôi là người mới. Nếu tôi không thể sử dụng dấu hai chấm, làm cách nào tôi có thể xác định ổ đĩa trong các đối số xcopy của mình?
Paul_NJ

@Paul_NJ chỉ: được phép trong phần ổ đĩa của tên thư mục chứ không phải bất kỳ nơi nào khác (như ở giữa nơi bạn có nó) ..
DavidPostill
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.