Các lô của Windows-10 dựa trên lệnh DATE, cách sử dụng trên các phiên bản Windows thấp hơn


2

Tôi đang làm việc trên hai máy (ảo):

  • Đầu tiên là máy Windows 10
  • Thứ hai là máy Windows 7

Trên cả hai, các định dạng ngày ngắn đều bằng nhau: dd.MM.yyyy
Trên cả hai, tôi đang chạy cùng một tập tin, dựa trên DATElệnh.

Tôi có sự khác biệt trong kết quả, liên quan đến kết quả của DATEkết quả lệnh:

  • Trên Windows 10: The current date is: st 22.03.2017
  • Trên Windows 7: The current date is: 22.03.2017

Như bạn có thể thấy, sự khác biệt là do sự hiện diện của tên của ngày hôm nay ( stlà viết tắt của từ tiếng Séc cho Wednesday).

Hệ thống Windows 10 là chủ, vì vậy câu hỏi của tôi: làm thế nào tôi có thể thay đổi hệ thống Windows-7 để bao gồm hai chữ cái đầu tiên của tên trong ngày?

Khi thử nghiệm, tôi đã thử các định dạng sau cho định dạng ngày ngắn:

dd dd.MM.yyyy   // this is better, the length of the format is good,
                   but it does not start with the initials of the day's name.
dddd dd.MM.yyyy // this starts with the day's name, but completely, 
                   and I only want the first two letters.

Trong khi đó tôi đã có một cái nhìn sâu hơn về vấn đề: định dạng ngày dường như được sử dụng ở hai nơi:

  1. Trong khi làm việc với DATElệnh dòng lệnh (tôi cần một định dạng như
    xx dd.MM.yyyy(bất cứ điều gì xxcó thể) để xử lý thêm
  2. Trong thời gian sau echo: for /r %DIRECTORY% %I in ("*.*") do echo %~tfI Ý tưởng là hiển thị dấu thời gian và tên tệp, đại loại như:
    22.03.2016 13:50 <filename>(không có xx)

Không thể có 2 ngày trong tuần trong Windows 7.
DavidPostill

Tôi thấy có hai lựa chọn: (1) sử dụng định dạng ngày dài, nhưng thay đổi tên ngày thành tương đương ngắn, mặc dù điều này có nghĩa là bạn sẽ không bao giờ thấy tên ngày dài thực sự; (2) viết chương trình của riêng bạn để báo cáo ngày: đây sẽ chỉ là một vài dòng Cvà sẽ hoàn toàn độc lập với cài đặt khu vực hoặc có thể được thực hiện trong một tệp bó hơi phức tạp thao túng nội dung của `% DATE % biến.
AFH

Sử dụng wmichoặc PowerShell để thao tác ngày theo cách độc lập với cài đặt Ngôn ngữ, Vùng và Ngôn ngữ. Xem câu trả lời của tôi Tập lệnh Batch (cmd) dẫn đến định dạng DD-MM-YYYY_weekday để biết một số mẹo.
DavidPostill

@AFH: thật không may, ngay cả việc viết một chương trình nhỏ của riêng mình cũng không giải quyết được vấn đề: Tôi sẽ cần gọi chương trình này là "date.exe", nhưng khi tôi khởi chạy Date, ngay cả trong thư mục mà tôi vừa biên dịch "date.exe", thay vào đó, nó vẫn tiếp tục dùng lệnh dòng DATElệnh.
Dominique

Tại sao bạn cần phải đặt cho nó cùng một tên? Tại sao không gọi nó CzDate.exehoặc một cái gì đó tương tự? Trong cmdcác datelệnh là một vỏ tích hợp, như vậy sẽ luôn luôn được lựa chọn thay cho một bên ngoài date.exe, trừ khi bạn thêm một đường dẫn đến cuộc gọi, ví dụ .\date; cách khác, để sử dụng dòng lệnh (không phải trong tệp bó), bạn có thể đặt bí danh, vd doskey date=.\date.exe.
AFH

Câu trả lời:


1

Trong windows 7, bạn phải sử dụng dddđể có định dạng tương tự, đó là 3 ký tự, không phải 2 ký tự.

Vì vậy, bạn có thể sử dụng ddd dd.MM.yyyy . Đó là định dạng được hỗ trợ.

Một cách để có được 2 ký tự sẽ là xóa một tệp có tệp bó.


Xin vui lòng đọc lại câu hỏi một cách cẩn thận. Câu trả lời của bạn không trả lời câu hỏi ban đầu. Anh ta muốn thêm vào máy Windows 7 chứ không xóa khỏi máy Windows 10.
DavidPostill

Có vẻ như yêu cầu là cách khác. Tôi đã cập nhật.
Vượt qua

Có lẽ điều này có thể hữu ích sau tất cả: bạn có biết ai đã quản lý để hoàn thành nó trên Windows 10 không? Định dạng ngày ngắn: dd.MM.yyyyKết quả dòng lệnh DATE: st 22.03.2017=> Làm thế nào mà họ quản lý nhận được kết quả này bắt đầu bằng st ?
Dominique

Bạn sẽ không có st nếu bạn chỉ sửa đổi nó thành dd.MM.yyyy. Để thêm lại st, thiết lập lại phải ở định dạng dd dd.MM.yyyy.
Khắc phục

0

Thật là một mớ hỗn độn, nhưng tôi tin rằng tôi đã tìm thấy một giải pháp cho vấn đề:

Vấn đề là như sau: Trên Windows 10, ngay cả khi có định dạng ngày đơn giản (như dd.MM.yyyy), date /Tdòng lệnh sẽ thêm các ký tự đầu tiên trong ngày, vì vậy chúng tôi nhận được thông tin sau:

date /T
st 22.03.2017

Và đồng nghiệp của tôi đã xây dựng các lô của họ xung quanh sự hiện diện của các nhân vật "st" đó. Chạy các lô này trên các phiên bản Windows thấp hơn sẽ đưa ra các vấn đề được đề cập.

Khi bắt đầu các đợt, tôi đã thêm dòng:

DATE=xx %DATE%

(rất trẻ con, tôi thừa nhận)
Điều này làm cho các lô tệp hoạt động trên máy tính Windows-7 của tôi.
Để làm cho nó hoạt động trên cả hai hệ thống, tôi chỉ cần thêm một kiểm tra trên nền tảng, đại loại như:

set WINDOWS_10=%ver | findstr /C:"Version 10"%
if "WINDOWS_10"=="" (
  set DATE=xx %DATE%)

Tôi chưa kiểm tra nó trên PC Windows-10, nhưng tôi tin rằng điều này sẽ thực hiện được.


1
Tôi không thể kiểm tra Win7 nữa, vì tôi đã nâng cấp tất cả các hệ thống W7 của mình, nhưng trên Win10, set Windows_10=lệnh của bạn không hoạt động: bạn cần ver | findstr /C:"Version 10", tiếp theo là if errorlevel 1 set DATE=xx %DATE%. Điều này sẽ ảnh hưởng đến những gì %DATE%trả về, nhưng datebản thân lệnh sẽ không bị ảnh hưởng. set DATE=Trước tiên, bạn cũng nên xóa biến cục bộ và một lần nữa trước khi thoát, để không ảnh hưởng đến các tệp bó khác được gọi từ cùng một cmdthể hiện.
AFH

Nó không thêm chúng nếu bạn thay đổi cài đặt của mình.
Khắc phục

@AFH: cảm ơn vì đã cảnh báo, nhưng các tệp tin được sử dụng từ bộ lập lịch tác vụ, vì vậy sẽ không bao giờ có bất kỳ chương trình nào khác được chạy từ cùng một cmdthể hiện.
Dominique
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.