แปลงสตริงฐานสิบหกเป็นสตริง ASCII ในไฟล์แบตช์ของ Windows [ซ้ำกัน]

Jan 25 2021

ในไฟล์ Windows batch (cmd) ฉันต้องการแปลงเนื้อหาของสตริงเลขฐานสิบหกในรูปแบบ

4C6F67696300000000000000

เป็นสตริง ASCII ที่เทียบเท่าที่นี่ "Logic" สตริงเลขฐานสิบหกมีขนาดเท่ากันเสมอ (12 อ็อกเต็ต) โปรดทราบว่าจะสิ้นสุดด้วยค่า null หากสตริงมีความยาวน้อยกว่า 12 อักขระ ต้องมีการแปลงเฉพาะอักขระ ASCII ที่พิมพ์ได้ธรรมดา (20-7F) เท่านั้น ต้องการโซลูชันแบบแบทช์บริสุทธิ์

คำตอบ

1 mEm Jan 25 2021 at 01:50

ใช้certutilเครื่องมือดูcertutil /?ข้อมูลเพิ่มเติม

setlocal enabledelayedexpansion
set "hex=4C6F67696300000000000000"
echo !hex!> temp.hex
call certutil -decodehex temp.hex str.txt >nul
set /p str=<str.txt
echo:
( del temp.hex & del str.txt )>nul
echo Your decoded string is:"!str!".
endlocal
exit /b 0