![]() |
Добавление числа после точки с условием
Добрый день. Помогите решить такую задачу. Есть файл 111.txt который лежит в C:\ в нем много строк текста. Нужно найти строки вида:
Сумм:30 Сумм:10.1 Сумм:50.03 С этих строках, там, где после точки идет одно число в конце нужно дописать 0, т.е. строка Сумм:10.1 должна стать Сумм:10.10, а там где нет точки добавить точку и два нуля, т.е. вместо Сумм:30 должно стать Сумм:30.00, строку с двумя цифрами после точки оставить без изменений. Файл с изменениями сохранить в 222.txt P.S. в принципе можно и не в CMD, а в WHS или PowerShell |
foma24, проверьте:
Код:
@ECHO OFF>222.txt |
Большое спасибо, только небольшое уточнение, нужно чтобы батник обрабатывал только строки с началом Сумм, т.е. например если в строке будет не Сумм:30 а Итог:30 то такую строку трогать не нужно, она должна в первозданном виде сохраниться в файл 222.txt
|
Цитата:
У меня какой-то тихий ужас получился: |
Цитата:
|
|
Код:
@ECHO OFF>222.txt |
Огромное спасибо все прекрасно работает.
Если можно еще одна задачка, файлы внутри такие же, но их много, хранятся в одной папке, нужно в этой папке отобрать все файлы где есть строки вида Сумм:30 Сумм:10.1 т.е. либо без точки, либо с одной цифрой после точки и скопировать в отдельный каталог |
Кодировка та же? Пробуйте:
|
Код:
@ECHO OFF |
Georgio, почему не просто:
Код:
findstr.exe /r /e /c:"Сумм:[0-9][0-9]" /c:"Сумм:[0-9][0-9]\.[0-9]" "%%~i" |
Iska, зта "сволочь", именуемая утилитой findstr.exe, никак не хочет напрямую воспринимать кириллицу. Ни смена кодовой страницы, ни перекодирование BAT-файла не приносят результата. Но, как видите, выход существует. Кстати, так и думал, что кто-нибудь спросит.
|
У меня — воспринимает:
Код:
E:\Песочница\0269>chcp |
Всем спасибо все прекрасно работает.
Подскажите еще, в том же файле еще есть строки вида <КоллПлат>45<\КоллПлат> с которыми нужно сделать тоже самое. На PS все прекрасно работает, а вот CMD не хочет воспринимать символы <> можно ли что то с этим сделать ? |
Цитата:
Если так, то сделаем. |
Простите что не уточнил. Лучше всего было бы и то и то. Т.е. тоже один батник ищет файлы с такой строкой в папке, другой батник корректирует файл и сохраняет в другой файл. Извините что надоедаю со своей проблемой
|
Код:
@ECHO OFF Второй BAT-файл, котрый будет обрабатывать такие файлы, дописываю. |
Данный BAT-файл обрабатывает нужные файлы в пакетном режиме, причём обрабатываются все строки, включая и строки с угловыми скобками, так что необходимость в предыдущем BAT-файле может отпасть. Этот скрипт можно даже использовать сразу, без сортировки файлов, так как, если в файле не нужно делать замены, то такой файл будет переписан без изменений. Так что проверяйте.
Код:
@ECHO OFF Единственное, что может вызвать ошибку,-- это наличие в строке непарных кавычек, но такие случаи на практике редки. Ещё о некоторых нюансах. 1. Пустые строки не переписываются. 2. Пробелы в начале строк также не сохраняются. 3. Если строка целиком заключена в кавычки, то кавычки отбрасываются. 4. Если ещё вдруг что-нибудь заметите, сообщите. |
Вложений: 1
Цитата:
Цитата:
Вот скрипт, который я протестировал в своей Windows 7 Starter: Код:
CHCP Последние строки для каждой кодировки просто показывают содержимое файла. А вот результат выполнения: Файл 99938 Жаль, что в данный момент больше не на чем проверить, но, если мне не изменяет память, в тех версиях Windows XP и Windows Vista, на которых я работал, проблем с кириллицей для findstr.exe не было. Очевидно, в Windows 7 Starter другая редакция этой утилиты. Так что тот вариант скрипта универсален. |
|
Цитата:
Код:
E:\>CHCP Цитата:
Цитата:
|
Всем большое спасибо!!!
|
Цитата:
Цитата:
Почему Вы не пользуетесь каким-нибудь подходящим редактором: Bred2/Bred3, AkelPad, Notepad++ и т.п.? Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Тоже об зтом думал. Выкладываю: Файл 99964 |
Цитата:
Цитата:
|
|
Время: 14:03. |
Время: 14:03.
© OSzone.net 2001-