Theo sau bài viết How can I write a null ASCII character (nul) to a file with a Windows batch script? thực sự có các phương pháp để viết một ký tự ASCII NULL (nul) vào một tệp với một tập lệnh batch.Làm thế nào tôi có thể lưu trữ một ký tự ASCII NULL (nul) trong một biến với một tập lệnh batch của Windows?
Tuy nhiên, tôi không thể tìm thấy cách lưu trữ ký tự NULL vào biến.
Giả sử file null.nil
chứa một nhân vật NULL duy nhất, chuyển hướng nó vào set /P
dường như không làm việc, biến xuất hiện trống:
< "null.nil" set /P NULL=
set NULL
for /F
không xuất hiện để làm việc, hoặc vì nó dường như bỏ mọi ký tự NULL nó gặp. Dựa trên cùng một tập tin null.nil
, kết quả như sau trong một biến rỗng:
for /F %%S in ('type "null.nil"') do set NULL=%%S
set NULL
Thay đổi cú pháp set
-set "NULL=%%S"
hoặc set NULL=^%%S
không thay đổi bất cứ điều gì, mặc dù dòng lệnh type "null.nil"
không echo nhân vật NULL (trên Windows của tôi 10 x64 máy; chuyển hướng type
xuất ra một tệp và xem tệp bằng trình chỉnh sửa hex).
Vậy làm cách nào tôi có thể đặt biến thành một ký tự NULL? Ký tự NULL có thể được lấy từ một tập tin (như null.nil
) hoặc được tạo ra bởi một số hack thông minh, nhưng tôi không muốn nó được nhúng trong tập tin thực thi trực tiếp.
Chỉ cần đoán ... Tôi nghi ngờ rằng nội bộ env. các biến được xử lý như các chuỗi được kết thúc bằng null, và vì một chuỗi không chứa gì nhưng một char rỗng rỗng (không có gì xa như nội dung), và thiết lập một env. var để không xóa nó, bạn sẽ gặp vấn đề ở đây. :-) –
Thật không may, bạn đúng, @KenWhite; Tôi chỉ tìm thấy một bài đăng ở đây xác nhận sự nghi ngờ hợp lý của bạn: [Đặt biến môi trường cho một quá trình cụ thể của một quy trình cụ thể] (http://stackoverflow.com/a/13092538) – aschipfl
Nếu bạn quản lý bằng cách nào đó ký tự NULL đơn' làm thế nào để bạn thấy trước bạn có thể * sử dụng * biến đó? – dxiv