Лиза Хабенская
Мыслитель
(5305)
8 часов назад
@echo off
setlocal enabledelayedexpansion
set "line="
for /f "usebackq delims=" %%a in ("ID.txt") do set "line=%%a"
for /f "tokens=2 delims:=" %%b in ("%line:~13%") do (
set /a "decimal=0x%%~b"
)
echo Десятичное число: %decimal%
Пофиг НафиговичУченик (108)
7 часов назад
содержимое исходного файла ID.txt:
"ProductACode"=dword:0000008c (HEX)
ответ в окне:
C:\Users\1>echo on
C:\Users\1>setlocal enabledelayedexpansion
C:\Users\1>
C:\Users\1>set "line="
C:\Users\1>for /f "usebackq delims=" %%a in ("ID.txt") do set "line=%%a"
Непредвиденное появление: %%a.
C:\Users\1>for /f "tokens=2 delims:=" %%b in ("%line:~13%") do (
Непредвиденное появление: %%b.
C:\Users\1> set /a "decimal=0x%%~b"
Димка Зубарев
Знаток
(422)
7 часов назад
@echo off
setlocal enabledelayedexpansion
:: Путь к файлу
set "input_file=ID.txt"
:: Чтение строки из файла
for /f "usebackq tokens=2 delims==" %%A in ("%input_file%") do (
set "hex_value=%%A"
)
:: Удаление "dword:" и "(HEX)" из строки
set "hex_value=%hex_value:dword:=%"
set "hex_value=%hex_value: (HEX)=%"
:: Преобразование HEX в DEC
set /a dec_value=0x%hex_value%
:: Вывод результата
echo HEX: %hex_value%
echo DEC: %dec_value%
pause
Пофиг НафиговичУченик (108)
6 часов назад
Ответ в окне:
C:\Desktop>@echo off
setlocal enabledelayedexpansion
:: Путь к файлу
set "input_file=ID.txt"
:: Чтение строки из файла
for /f "usebackq tokens=2 delims==" %%A in ("%input_file%") do (
Непредвиденное появление: %%A.
set "hex_value=%%A"
)
:: Удаление "dword:" и "(HEX)" из строки
set "hex_value=%hex_value:dword:=%"
set "hex_value=%hex_value: (HEX)=%"
:: Преобразование HEX в DEC
set /a dec_value=0x%hex_value%
Неправильное число. Числовые константы должны быть десятичными (17)
шестнадцатеричными (0x11),или восьмеричными (021).
:: Вывод результата
echo HEX: %hex_value%
HEX: %%A
echo DEC: %dec_value%
odpumt
Профи
(863)
6 часов назад
Чтобы извлечь десятичное значение из строки формата `"ProductACode"=dword:0000008c` в текстовом файле с помощью .bat-файла, вы можете воспользоваться следующими шагами:
1. Прочитать строку из файла.
2. Извлечь шестнадцатичное значение.
3. Преобразовать шестнадцатичное значение в десятичное.
Вот пример .bat-файла, который выполняет эти действия:
```bat
@echo off
setlocal enabledelayedexpansion
rem Указываем файл, из которого будем читать данные
set "inputFile=ID.txt"
rem Читаем файл построчно
for /f "usebackq tokens=1,2 delims==" %%a in ("%inputFile%") do (
rem Проверяем, соответствует ли строка формату
if "%%a"=="ProductACode" (
rem Убираем префикс dword: и пробелы
set "hexValue=%%b"
set "hexValue=!hexValue:dword:=!"
set "hexValue=!hexValue: =!"
rem Преобразуем шестнадцатичное значение в десятичное
set /a decimalValue=0x!hexValue!
rem Выводим результат
echo Десятичное значение: !decimalValue!
)
)
endlocal
```
### Как это работает:
1. Мы устанавливаем переменную `inputFile`, которая указывает на файл, содержащий вашу строку.
2. Используем цикл `for /f`, чтобы читать файл построчно и разбиваем каждую строку по символу `=` на токены.
3. Проверяем, является ли первый токен `ProductACode`. Если да, то извлекаем второй токен.
4. Удаляем префикс `dword:` и лишние пробелы из шестнадцатичного значения.
5. Преобразуем шестнадцатичное значение в десятичное с помощью `set /a`.
6. Выводим полученное десятичное значение.
### Примечание:
- Убедитесь, что файл `ID.txt` находится в той же директории, где вы запускаете батник, или укажите полный путь к файлу.
- Формат строки в `ID.txt` должен быть идентичен указанному вами, иначе возможно, что скрипт не сможет корректно извлечь значение.
содержащего строку вида:
"ProductACode"=dword:0000008c (HEX)
получить десятичное число с помощью бат?
использование в лоб
CERTUTIL.EXE -decodehex
приводит к итогу "неправильные данные"...
заранее благодарю за ответы