This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

nhờ trợ giúp trích text từ cửa sổ cmd

haxoma

Rìu Vàng Đôi

hi các thành viên diễn đàn mình có vấn đề nhờ mọi người chỉ giúp nha. mình muốn lấy giá trị text 495264-499378-110913-070257-588720-567930-256091-543862 như hình trên bảng cmd rồi gán cho biến password với code là
for /f "tokens=2 " %A in ('manage-bde -status E: ^| findstr "Password:"') do set password=%A ví dụ là như vậy nhưng khi xuất ra gán vào biến password là Password chứ không phải 495264-499378-110913-070257-588720-567930-256091-543862

có ai biết cách trích xuất như mình nói không? thanks luôn! ^^
 
Sửa lần cuối:

ohmygodness

Rìu Sắt Đôi
Hello! Based on my understanding of your question, it seems like you're trying to extract a text value from a command prompt window and assign it to a variable in your code.

If that's the case, you can modify your existing code to extract the desired text value using the "for /f" command and then assign it to a variable. Here's an example:

@echo off
for /f "tokens=2 " %%A in ('manage-bde -status E: ^| findstr "Password:"') do set password=%%A
echo The password is %password%
In this example, the "for /f" command extracts the text value after the word "Password:" in the output of the "manage-bde -status E:" command. The extracted text value is then assigned to the "password" variable using the "set" command.

Finally, the "echo" command displays the value of the "password" variable. You can modify this code to suit your specific requirements.

I hope this helps! Let me know if you have any further questions.
 

haxoma

Rìu Vàng Đôi
I need to output the value 495264-499378-110913-070257-588720-567930-256091-543862 in the command manage-bde -protectors -get E: not the string value "Password" but can't get the value? Not the command "manage-bde -status E:" I type wrong.
 
Sửa lần cuối:

ohmygodness

Rìu Sắt Đôi
I need to output the value 495264-499378-110913-070257-588720-567930-256091-543862 in the command manage-bde -protectors -get E: not the string value "Password" but can't get the value? Not the command "manage-bde -status E:" I type wrong.
thôi mệt quá bác nói chuyện trực tiếp với thằng giúp bác đi, tên nó là chatgpt
 

bbkim

Mỗi người một câu chuyện
Mã:
for /f "tokens=2*" %A in ('manage-bde -status E: ^| findstr /c:"Password:"') do set "password=%B"

Bạn thử lại với dòng code này xem có ra kết quả không. Nếu không ra bác chụp hình kết quá nó xuất mình xem thử nó xuất ra cái gì. Echo %password% luôn nha. Mình không có bitlocker nên không test được.

p/s: ChatGPT là công cụ. Dù muốn dù không nó vẫn ngu :v. Muốn nó giúp mình thì mình phải biết cách nói chuyện với nó.
 

rkdc131

Rìu Sắt
Hơi lề tí nhưng bạn có thể dùng với Powershell (PWS) như thế này :

$pas = manage-bde -protectors -get c: | select -last 2
(c là kí tự ổ đĩa của mình nha, bạn tự thay)

$pas thì tương tự như password=, chạy xong lệnh trên cứ gõ $pas là nó ra

---

Update : dựa trên kết quả của các bác trên (cảm ơn tất cả các bác, mình xin phép trích những cái cần thiết ra) thì có thể đây là cái bạn cần (chạy trong CMD quyền admin nhé) - mình lồng lệnh PWS vào lệnh CMD :

@echo off
for /f %A in ('powershell.exe "manage-bde -protectors -get c: | select -last 2"') do set pas=%A
echo %pas%

hoặc (trường hợp này xuất ra file và bạn đã mở CMD ở đường dẫn đó)

for /f %A in ('powershell.exe "manage-bde -protectors -get c: | select -last 2"') do echo %A > test.txt
(test.txt là tên và phần mở rộng mình tự đặt, bạn có thể thay bằng những gì bạn muốn)

Chúc bạn thành công ! (chứ mình thì thành công rồi đó :v)
 
Sửa lần cuối:

haxoma

Rìu Vàng Đôi
mình cần lấy 495264-499378-110913-070257-588720-567930-256091-543862 chuỗi này của hàng Password: cuối cùng còn hàng Numerical Password có mã ID {B8A334BE-0759-41AE-9C6D-A7AAD6D27517} mình lấy được rồi.
 

rkdc131

Rìu Sắt
Cái ở trên mình ghi là đúng với nhu cầu của bạn đó, bạn test đi. Mình test trực tiếp trên máy mình xong mới gõ ra. Nhớ chạy CMD hoặc file *.bat dưới quyền Admin ..
 

haxoma

Rìu Vàng Đôi
bạn gửi hình test đã chạy ok lên thread này được không?
 

haxoma

Rìu Vàng Đôi
mình sẽ thử lệnh bằng gợi ý của @bbkim
 

rkdc131

Rìu Sắt
bạn gửi hình test đã chạy ok lên thread này được không?

Gửi hình cho bạn xem qua !

Lệnh và kết quả ban đầu :


Sau khi dùng lệnh đã ghi ở trên :


Kết quả đã trích xuất ra được giá trị của phần Password !
 
Sửa lần cuối:

haxoma

Rìu Vàng Đôi
đúng là khi đặt câu hỏi khó cho chatgpt thì nhận được câu trả lời đơn giản lắm mà thôi kệ nó có khối thông tin cơ bản khổng lồ chỉ cần kết hợp lại cũng có thể giải quyết vấn đề. mình đã tìm ra câu lệnh trên cmd làm được rồi @bbkim chủ yếu có bạn @rkdc131 gợi ý bên powershell rồi chiếu theo đó chỉnh code cmd cho ra kết quả cần tìm. bác MS chơi kỳ ra powershell làm nhìn code cmd quen rồi giờ phải học thêm powershell nữa
 

bbkim

Mỗi người một câu chuyện
powershell ra đời theo nhu cầu thôi. Làm đối trọng với linux nên nó mạnh hơn cmd nhiều cũng phức tạp hơn.
 

haxoma

Rìu Vàng Đôi
bạn có cách nào chạy lệnh tokens thì nó lấy 2 giá trị rồi gán cho biến pass và echo xuất ra như ví dụ của bạn là {5464A025-F688-4928-AA6B-BCD1B4C064D7} lần 1 và {97AB2C52-9187-4CC4-8778-1B9EC5933A39} lần 2 thì có cách nào chỉ lấy giá trị lần 1 gán giá trị cho biến pass rồi dừng for không lấy lần 2 do chỉ cần giá trị lần 1 thôi hay không?
 

bbkim

Mỗi người một câu chuyện
làm batch file thì được chứ copy/paste trực tiếp thì chịu.
batch file thì chỉ cần for ... do (if ... goto) . Từ khóa bạn có thể search để tìm hiểu thêm là exit in for loop
 

haxoma

Rìu Vàng Đôi
for /f "tokens=2" %a in ('manage-bde -protectors -get E: ^| findstr ID') do set pass=%a
lấy 2 lần giá trị {5464A025-F688-4928-AA6B-BCD1B4C064D7} và {97AB2C52-9187-4CC4-8778-1B9EC5933A39} gán cho biến pass={97AB2C52-9187-4CC4-8778-1B9EC5933A39} chỉ muốn lấy {5464A025-F688-4928-AA6B-BCD1B4C064D7} biến pass={5464A025-F688-4928-AA6B-BCD1B4C064D7} rồi dừng vòng lặp for lại @bbkim
 

rkdc131

Rìu Sắt

 

rkdc131

Rìu Sắt
chạy command cmd thế nào mà ra được kết quả như hình vậy bạn?

# Lấy giá trị ID dòng đầu # chạy trực tiếp trên cmd quyền admin
Cái này mình có nhiều cách viết (kể cả dùng các tiện ích từ GNU Core Utilities) nhưng mình thấy lồng PWS vào vẫn nhanh gọn nhất : for /f "tokens=2" %b in ('powershell.exe "manage-bde -protectors -get c: | findstr ID | select -first 1"') do echo Dong ID dau tien : %b hoặc do set fid=%b rồi echo ở nơi nào khác

# Lấy mật khẩu cuối cùng # chạy trực tiếp trên cmd quyền admin
Cái này bữa đang bận chưa suy nghĩ kĩ nên lồng PWS vô thấy dư thừa vì có thể tận dụng skip của for nên nay mình viết lại : for /f "skip=15" %c in ('manage-bde -protectors -get c:') do echo Dong Pass can xuat ra : %c hoặc do set pas=%c rồi echo ở nơi nào khác

# Lồng vào file BAT # màu xanh là giá trị thêm vào so với đoạn chạy trực tiếp trên cmd
(tự tùy biến)
setlocal enabledelayedexpansion
(tự tùy biến)
for /f "tokens=2" %%b in ('powershell.exe "manage-bde -protectors -get c: | findstr ID | select -first 1"') do (
echo Dong ID dau tien : %%b hoặc do set fid=%%b rồi echo ở nơi nào khác hay echo ở dưới luôn
)
(tự tùy biến)
for /f "skip=15" %%c in ('manage-bde -protectors -get c:') do (
echo Dong Pass can xuat ra : %%c hoặc do set pas=%%c rồi echo ở nơi nào khác hay echo ở dưới luôn
)
(tự tùy biến)

Update : mình bổ sung thêm các chỗ có màu tím
 
Sửa lần cuối: