Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

По созданию bat

Пофиг Нафигович Ученик (108), открыт 8 часов назад
Как Из текстового файла наприм. ID.txt
содержащего строку вида:
"ProductACode"=dword:0000008c (HEX)
получить десятичное число с помощью бат?

использование в лоб
CERTUTIL.EXE -decodehex
приводит к итогу "неправильные данные"...


заранее благодарю за ответы
4 ответа
Лиза Хабенская Мыслитель (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"
Пофиг НафиговичУченик (108) 7 часов назад
вывести бы еще и ответ в файл сразу например ID_new.txt
для чистоты т.с.
Пофиг НафиговичУченик (108) 7 часов назад
тогда проще:
в ID.txt:
0x8c
как вывести ответ на but в new.txt число в десятичном?
Лиза Хабенская Мыслитель (5305) Пофиг Нафигович, Используй такой батник:@echo off set /p hex=<ID.txt set /a dec=0x%hex% echo %dec%>ID_new.txt
Димка Зубарев Знаток (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%
Димка ЗубаревЗнаток (422) 6 часов назад
Напиши в тг dizubarev, скину исправленный
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` должен быть идентичен указанному вами, иначе возможно, что скрипт не сможет корректно извлечь значение.
Пофиг НафиговичУченик (108) 3 часа назад
опять те же костыли.... "неправильные данные"
Максим Пятых Профи (502) 5 часов назад
В блокноте пишешь:
@echo off
ProductACode"=dword:0000008c (HEX)
CERTUTIL.EXE -decodehex
echo Неправильные данные
pause
И потом нажимаешь сверху на file Сохранить как
“*имя файла*.bat
Готово
Тут ничего сложного нету, сам имею опыт создания батников
Похожие вопросы