ребята.Я пытаюсь получить версию файла из некоторых нетекстовых файлов.В каждой из них (примерно в начале) есть несколько текстовых строк, содержащих информацию о файле.Например:
[some nontext data (very few)]
version: 455467
build date: 23.11.2010
.....
[rest of the nontext data]
Если хотите, я попытаюсь создать такой файл, но я не могу показать вам исходные файлы (моя компания не допустит этого).Извините ...
Я попробовал этот код:
@echo off
for /f "tokens=1,2" %%A in (file.dat) do if %%A==version: (set version=%%B
goto found)
echo not found
goto end
:found
echo found: %version%
:end
pause
Но это работает, только если "file.dat" является текстовым файлом, если нет, я получаю "не найден".Если я заменю file.dat на «type file.dat», он не вернется (загрузка процессора 100%).Если я заменю file.dat на 'find / i' version: "file.dat ', это будет работать, но очень, очень медленно (минуты).Поскольку мне приходится обрабатывать много файлов, и у меня мало времени, я не могу его использовать.Это работает намного быстрее, если я ввожу каждый файл вручную с помощью средства просмотра и копирую номер версии;но дело в том, что я хочу сделать это с помощью cmd ...
О, и я не могу установить другие программы на компьютер, на котором я работаю ....
ОС Windows XP x86.
Пожалуйста, помогите мне.Спасибо.
С наилучшими пожеланиями, Cosmin
Позднее редактирование: у меня есть "сборка" тестового файла, чтобы все могли видеть и тестировать: http://www.mediafire.com/download.php?r0x5702lkv14jro Он очень маленький (реальные файлы имеютдесятки, некоторые даже сотни МБ).
Позже, позже отредактируйте: тестовый файл полезен для проверки, ЕСЛИ код находит число, но, будучи очень маленьким, он не дает представление о том, сколько временинужен для реального файла данных.Но вы можете сделать это: измерить время сканирования тестового файла и умножить на «100 МБ / 2088 байт» = 50 219. Например, это работает с «найти».С «типом» еще медленнее (я думаю, что это экспоненциально, а не линиарно).