Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   (cmd|bat) Замена одних символов на другие (http://forum.oszone.net/showthread.php?t=301322)

Ваня_98 18-06-2015 02:18 2519678

(cmd|bat) Замена одних символов на другие
 
Есть такая программа,которая заменяет одни символы на другие
Чтобы у вас была эта прога создайте текстовый документ и переименуйте его в 123.bat потом пкм по файлу изменить и вставьте этот код
HTML код:

SetLocal EnableExtensions
set src=1.txt
set dest=2.txt
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "1" "" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "2" "" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "3" "" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "4" "" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "5" "" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "6" "" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "7" "" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "8" "" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "9" "" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "0" "" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "a" "o" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "o" "a" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "1" "2" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "2" "3" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "3" "4" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "4" "5" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "5" "6" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "6" "7" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "7" "8" "%dest%"
For /F "UseBackQ delims=" %%? in ("%src%") do call :replace "%%?" "8" "9" "%dest%"
:replace
  set "st=%~1"
  call echo %%st:%~2=%~3%%>> "%~4"

1.txt это файл который должен лежать с bat в одной папке
2.txt это куда сохраняется результат

а мне нужно чтобы этот код (к примеру) 8 на 9, но не в одной строке заменял, а во всём текстовым документе, так-как сейчас этот код работает очень и очень медленно, и у меня txt бывают очень большие, бывает и на 4000000 строк и более.
Кто даст новый код буду очень благодарен!

Iska 18-06-2015 02:51 2519680

Воспользуйтесь sed — Википедия: sed for Windows.

Цитата:

Цитата Ваня_98
бывает и на 4000000 строк и более. »

Что за файлы?

opel431 18-06-2015 03:47 2519689

Цитата:

Цитата Iska
Что за файлы? »

Да задача! Это сколько нужно "прокрутить", чтобы разобрать, что 1 байт = 1 символ (unicode = 2), в килобайте = 1024 байта, и решить, сколько будет в файле с 4 000 000 строк, не говоря о том, сколько в каждой строке символов?
Реально, мне так кажется, если нужно исключительно "8" на "9", то зачем такой расширенный алгоритм? FOR всегда и во всех языках была медленной командой и наверное, лучше использовать SET - не утверждаю и с командами DOS давно не работал, поэтому, просто, как ожидание развернутой подсказки от профи и повышения собственного уровня.

Ваня_98 18-06-2015 06:19 2519695

В каждой строчке где-то по 10-17 симвалов

Iska 18-06-2015 07:24 2519702

opel431, проблема в том, что мы, как обычно, не видим и не знаем настоящей, реальной задачи, о которой автор молчит, а должны решать другую, вторичную, которую автор озвучил.

Ваня_98 18-06-2015 08:53 2519716

Я хочу увеличить скорость обработки, сейчас эта прога заменяет что-то на что-то в одной строке, а я хочу чтобы заменяла во всём txt примерно также как в текстовом блокноте открыть этот файл правка/заменить/что на что.

Iska 18-06-2015 13:28 2519836

Ваня_98, это опять-таки не та основная задача, которую Вы решаете. Могу лишь повторить: sed for Windows для решения Вашей вторичной (озвученной) задачи в рамках заявленной категории. Или перейти на WSH/PowerShell.


Время: 01:11.

Время: 01:11.
© OSzone.net 2001-