![]() |
Замена строки в файле строкой из другого файла - нужна помощь
У меня есть bat
bat
@echo
setlocal enableextensions enabledelayedexpansion set sFile=1.txt set sTempFile=TempFile.tmp for /f "usebackq" %%i in (`type "%sFile%" ^| find.exe /c /v ""`) do set sLines=%%i set /a iLine = sLines * %Random% / 32768 more +%iLine% "%sFile%">"%sTempFile%" <"%sTempFile%" set /p sVar=>nul echo %sVar% >2.txt endlocal exit /b 0 Рандомно вытаскивает из файла 1.txt строку и копирует ее в новый файл 2.txt Помогите добавить в этот же bat команду, которая берет содержимое файла 2.txt (одно текст. слово длиной 5-12 символов на латинице) и заменяет им строку Sample123 в файле out.dat |
Цитата:
В 1.txt каждая строка - это слово длиной 5-12 символов на латинице Рандомно выбирается строка из 1.txt (это слово 5-12 символов) и записывается в файл 2.txt В файле out.dat слово Sample123 заменяется словом записанным в 2.txt Для такой постановки (Ваш кусок переписал)
Код:
@Echo Off - в 1.txt строки с произвольными словами - в 2.txt надо записать одну из строк из 1.txt, в которой обязательно есть хотя бы одно слово длиной 5-12 символов на латинице - в файле out.dat слово Sample123 заменяется словом записанным в строке 2.txt, причем, если таких слов несколько, выбрать это слово случайным образом. При этом код в CMD получается более громоздким
Код:
@echo off |
megaloman, первый вариант правильный - огромное Спасибо!!! Наконец-то мои мучения заканчиваются!!! заработало!!!
|
megaloman, сначала неправильно скопировал ваш скрипт, не работало, проверил еще раз, все работает!!! в личку отправил вам сообщение.
|
dixxia, Я еще оттестировал батник, убедился, что он работает. Но предполагается, что файлы текстовые. С бинарным файлом штатными утилитами вряд ли возможно. На всякий случай добавил в батник контроль наличия файлов.
Код:
@Echo Off |
megaloman, проверил на файле, почему то минут 5 заняла эта операция, файл 100kb, а я такие bat-ы с разными значениями на один файл буду запускать штук 10 последовательно. Почти час. Печально очень. В HexEdit за пару минут меняю. Есть ли возможность убыстрить, может другими путями, может PowerShell быстрее будет? Во вложении конкретный файл, именно с такими мне нужно работать.
out.ggu это то, что я собирался подставлять вместо out.dat (текст samp123 почти в самом начале, встречается тольк один раз) 1.txt - это текстовой список не прикрепляет, наверно потому что недавно зарегистрировался на форуме |
В sfk команда sfk replace -binary /3232323220536f6e/4444444444444444/ -force -dir out.dat меняет бинарные 32 32 32 32 20 53 6f 6e на 44 44 44 44 44 44 44 44 мгновенно, и текст так же. Копаюсь в документации, пытаюсь сделать аналог скрипта ув.megaloman, серого вещества не хватвет катастрофически....
|
dixxia, Вы задали вопрос в теме CMD, получили bat. Для обработки текста CMD подходит плохо. Вот для текстовых файлов vbs-скрипт исполняется мгновенно.
Код:
File1 = "Z:\Box_In\1.txt" |
megaloman, это моя ошибка, что сразу не уточнил, что меняю в бинарном файле. Я не в курсе был, что "Для обработки текста CMD подходит плохо", теперь буду знать. Спасибо!
|
Время: 11:46. |
Время: 11:46.
© OSzone.net 2001-