Làm cách nào tôi có thể giữ XCOPY sao chép nhiều hơn mức cần thiết?


1

Tôi có một kịch bản để sao chép các tập tin từ thư mục này sang thư mục khác. Lệnh XCOPY trông như thế này:

 XCOPY /E /Y /V /D:%date% %reportsDataPath% TMP\

Cờ ngày được cho là làm cho nó chỉ sao chép các tệp từ ngày được chỉ định hoặc mới hơn, nhưng trong TMP tôi thấy rằng nó đã sao chép các tệp được tạo trước đó. Tuy nhiên, nó không sao chép tất cả dữ liệu từ các tập tin. Thay vào đó, nó sao chép tệp gốc và thư mục con mà không chứa dữ liệu mà chúng nên chứa.

Có một lỗi trong lệnh của tôi làm cho nó sao chép các tập tin đó?

Câu trả lời:


3

%date% đang đưa ra một định dạng xấu cho lệnh, trợ giúp nói rằng /D chuyển đổi mong đợi định dạng m-d-y, trong khi echo %date% sẽ cung cấp cho bạn Tue 11/26/2013. Có nghĩa là bạn cần định dạng lại ngày để tuân thủ.

Tôi nghĩ bạn có thể sửa nó với:

@echo off

:GetDate
for /f "skip=1 tokens=1-3" %%a in ('WMIC Path Win32_LocalTime Get Day^,Month^,Year') ^
do (
    set mydate=%%b-%%a-%%c
    goto CopyScript
)

:CopyScript
 xcopy /e /y /v /d:%mydate% %reportsDataPath% TMP\

Cập nhật số 1

Vì lợi ích của khách truy cập trong tương lai, tôi tin rằng bản cập nhật này sẽ giúp bạn có được định dạng ngày chính xác bất kể khu vực. Nếu ai đó từ một địa phương khác (bên ngoài Hoa Kỳ và sử dụng định dạng khác với mm / dd / yyyy theo mặc định) có thể xác minh, điều đó thật tuyệt vời.

Cập nhật số 2

Sử dụng powershell, bạn cũng có thể có được điều này ( cmd các lệnh vẫn hoạt động trong Powershell, nhưng chức năng tổng thể được mở rộng ồ ạt).

Get-Date -Format MM-dd-yyyy

Không cần lặp, sử dụng / D:% DATE: ~ 3,2% -% DATE: ~ 0,2% -% DATE: ~ 6,4% hoặc thậm chí tốt hơn, sử dụng ROBOCOPY thay vì XCOPY đáng tin cậy hơn.
WhoIsRich

@WhoIsRich - Bạn có thể muốn kiểm tra lại lệnh của mình ( %DATE:~3,2%-%DATE:~0,2%-%DATE:~6,4% ), kết quả đầu ra 1-Tu-/26/ (Tôi sao chép và dán nó, không có ngón tay béo ở đây). Có vẻ như nó thực sự nên là: %DATE:~4,2%-%DATE:~7,2%-%DATE:~10,4%
nerdwaller

2
À, quên rằng nó phụ thuộc vào định dạng giờ địa phương của bạn, vì vậy những gì tôi đã đăng là chính xác đối với tôi, bởi vì tôi ở Vương quốc Anh và% DATE% ở DD / MM / YYYY, như ở Hoa Kỳ,% DATE% có thể sẽ cung cấp bạn MM / DD / YYYY.
WhoIsRich

@WhoIsRich - Xin lỗi về điều đó! Đã thêm nó vào câu trả lời. Vì tò mò, phải không xcopy /? nói cho bạn rằng nó muốn /D:m-d-y vẫn?
nerdwaller

Có, XCOPY vẫn yêu cầu / D: m-d-y nên ít nhất là phù hợp :) Robocopy có / MINAGE: và muốn số ngày hoặc YYYYMMDD chỉ để làm cho mọi thứ thú vị.
WhoIsRich
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.