Xin code lấy ngày tháng năm giờ phút từ một máy tính khác trong cùng hệ thống mạng?

Liên hệ QC

Ngày mai trời lại sáng

Thành viên thường trực
Tham gia
4/7/21
Bài viết
339
Được thích
139
Chào mọi người,em muốn đoạn code đứng từ máy tính A lấy thông tin ngày tháng năm giờ phút của một máy tính B trong cùng hệ thống mạng, mọi người xem giúp em với.
 
Do lọc kết quả thôi

Trên máy tôi kết quả có chứa chuỗi dạng 02.10.2021 18:26:57 nên tôi lọc ra chuỗi

= <10 ký tự trước dấu cách><dấu cách><8 ký tự sau dấu cách có dạng: 2 chữ số:2 chữ số:2 chữ số>

Nếu áp dúng cho chuỗi của bạn là

... Current time at \\192.168.252.2 is 10/2/2021 8:35:45 PM

thì không có 8 ký tự nào khớp với 8 ký tự thời gian như ở trên (thời gian ở đây có 7 ký tự 8:35:45), và cũng không có 10 ký tự nào khớp với ngày. Trên máy tôi là 10 ký tự 02.10.2021 (ngày tháng luôn 2 ký tự), trong khi của bạn chỉ có 8, 9 hoặc 10 ký tự (ngày hoặc tháng có thể có 1 ký tự). Vì thế ngaythang = RỖNG và CDate(ngaythang) bị lỗi.

Kết luận: thử sửa 1 dòng code thành
Mã:
re.Pattern = ".* (\d{1,2}\D\d{1,2}\D\d{4} \d{1,2}:\d{2}:\d{2}(?: PM| AM)*).*"
Cảm ơn chú nhiều, hiện tại cháu cũng chưa test được nên cháu hỏi thêm một ý nữa. Vậy sửa thế này máy của chú đọc ngon chứ vì máy của chú đang khác của cháu và sửa như vậy liệu system ở mỗi máy khác nhau ngày trước tháng sau hay tháng trước ngày sau, 1 số hoặc 2 số v.v.. thì có vấn đề gì không chú?
 
Upvote 0
Cảm ơn chú nhiều, hiện tại cháu cũng chưa test được nên cháu hỏi thêm một ý nữa. Vậy sửa thế này máy của chú đọc ngon chứ vì máy của chú đang khác của cháu và sửa như vậy liệu system ở mỗi máy khác nhau ngày trước tháng sau hay tháng trước ngày sau, 1 số hoặc 2 số v.v.. thì có vấn đề gì không chú?
Nếu máy của bạn thiết lập là MM/dd/yyyy h:m:s mà máy trong cùng mạng lại có thiết lập là vd. dd.MM.yyyy hh:mm:ss thì rõ ràng có vấn đề rồi.

Có thể sửa thành
Sheet1.Range("A1").Value = ngaythang

tức nhập CHUỖI xuống sheet. Sẽ có vấn đề vd. 10/12/2021 thì không biết đó là 12 tháng 10 hay 10 tháng 12.

Lại phải thử dò xem máy "kia" có thiết lập thế nào.

Tôi dừng ở đây vì những vấn đề phát sinh là vấn đề mới.
 
Upvote 0
Nếu máy của bạn thiết lập là MM/dd/yyyy h:m:s mà máy trong cùng mạng lại có thiết lập là vd. dd.MM.yyyy hh:mm:ss thì rõ ràng có vấn đề rồi.

Có thể sửa thành
Sheet1.Range("A1").Value = ngaythang

tức nhập CHUỖI xuống sheet. Sẽ có vấn đề vd. 10/12/2021 thì không biết đó là 12 tháng 10 hay 10 tháng 12.

Lại phải thử dò xem máy "kia" có thiết lập thế nào.

Tôi dừng ở đây vì những vấn đề phát sinh là vấn đề mới.
Vâng cháu cảm ơn chú.
 
Upvote 0
Ta thử lần cuối. Nếu không thành công thì bạn chờ người khác, hoặc lập chủ đề mới.

Để khỏi rắc rối ta không dùng NET TIME nữa, ta thử dùng WMI. Không phải lăn tăn chuyện ngày hay tháng trước, vì ta nhận được ngày tháng năm giờ phút giây riêng rẽ. ngaygioWMI trả về Double là ngày tháng + thời gian. Nếu chỉ lấy ngày tháng thì lấy phần nguyên, nếu chỉ lấy thời gian thì lấy phần thập phân.
Mã:
Function ngaygioWMI(ByVal computer As String) As Double
Dim wmi As Object, items As Object, item As Object
    Set wmi = GetObject("winmgmts:\\" & computer & "\root\cimv2")
    Set items = wmi.ExecQuery("Select * from Win32_LocalTime")
    For Each item In items
        ngaygioWMI = DateSerial(item.Year, item.Month, item.Day) + TimeSerial(item.Hour, item.Minute, item.Second)
        Exit For
    Next
End Function

Sub test()
Dim ngaythang As Double
    ngaythang = ngaygioWMI("desktop-13iclt9")
    Sheet1.Range("A1").Value = CDate(ngaythang)
End Sub
 
Upvote 0
Ta thử lần cuối. Nếu không thành công thì bạn chờ người khác, hoặc lập chủ đề mới.

Để khỏi rắc rối ta không dùng NET TIME nữa, ta thử dùng WMI. Không phải lăn tăn chuyện ngày hay tháng trước, vì ta nhận được ngày tháng năm giờ phút giây riêng rẽ. ngaygioWMI trả về Double là ngày tháng + thời gian. Nếu chỉ lấy ngày tháng thì lấy phần nguyên, nếu chỉ lấy thời gian thì lấy phần thập phân.
Mã:
Function ngaygioWMI(ByVal computer As String) As Double
Dim wmi As Object, items As Object, item As Object
    Set wmi = GetObject("winmgmts:\\" & computer & "\root\cimv2")
    Set items = wmi.ExecQuery("Select * from Win32_LocalTime")
    For Each item In items
        ngaygioWMI = DateSerial(item.Year, item.Month, item.Day) + TimeSerial(item.Hour, item.Minute, item.Second)
        Exit For
    Next
End Function

Sub test()
Dim ngaythang As Double
    ngaythang = ngaygioWMI("desktop-13iclt9")
    Sheet1.Range("A1").Value = CDate(ngaythang)
End Sub

Cảm ơn chú rất nhiều,các làm này thì cháu thấy chuẩn và khả thi hơn cách trước nhiều.
Nhưng cháu thử chạy thì có vấn đề như sau, nếu chú biết nguyên nhân chỉ giúp cháu cách khắc phục với:

1633219194900.png

Cháu chạy net time như bài 11 thì không lỗi, như vậy là mạng có thông.
 
Upvote 0
Cảm ơn chú rất nhiều,các làm này thì cháu thấy chuẩn và khả thi hơn cách trước nhiều.
Nhưng cháu thử chạy thì có vấn đề như sau, nếu chú biết nguyên nhân chỉ giúp cháu cách khắc phục với:
Cháu chạy net time như bài 11 thì không lỗi, như vậy là mạng có thông.
Tôi không biết nguyên nhân. Cả đời tôi cũng chưa bao giờ thao tác với mạng nội bộ.
Thử dùng tên máy (computer name) xem sao.
 
Upvote 0
Tôi không biết nguyên nhân. Cả đời tôi cũng chưa bao giờ thao tác với mạng nội bộ.
Thử dùng tên máy (computer name) xem sao.
hiện cháu cũng chưa biết tên máy tính đó là gì , để cháu test trên máy khác được hay không cháu sẽ thông tin lại sau chú nhé.
 
Upvote 0
Tôi không biết nguyên nhân. Cả đời tôi cũng chưa bao giờ thao tác với mạng nội bộ.
Thử dùng tên máy (computer name) xem sao.
Chú ơi,cháu đã thử thay địa chỉ IP bằng tên máy tính, với câu lệnh Net Time thì OK, nhưng với câu lệnh WMI thì lỗi "Permission denied",chú xem có cần điều chỉnh gì thêm không?
1633231463515.png
 
Upvote 0
Chú ơi,cháu đã thử thay địa chỉ IP bằng tên máy tính, với câu lệnh Net Time thì OK, nhưng với câu lệnh WMI thì lỗi "Permission denied",chú xem có cần điều chỉnh gì thêm không?
View attachment 267130
Dùng IP 127.0.0.1 xem có được không( địa chỉ này là ko của chính máy chạy code. Ko được là code cần chỉnh lại). Hình như phải cấu hình bên máy kia mới được
Bài đã được tự động gộp:

Tôi không biết nguyên nhân. Cả đời tôi cũng chưa bao giờ thao tác với mạng nội bộ.
Thử dùng tên máy (computer name) xem sao.
Hôm qua cháu thử dùng powershell nhưng thất thủ.
 
Upvote 0
Chú ơi,cháu đã thử thay địa chỉ IP bằng tên máy tính, với câu lệnh Net Time thì OK, nhưng với câu lệnh WMI thì lỗi "Permission denied",chú xem có cần điều chỉnh gì thêm không?
Tôi cũng chả bao giờ dùng nên không nghiên cứu. Bạn tự tìm trong google vd. WMI Permission denied nhé.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom