![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] удалить текст в каждой строке txt файла |
|
|
CMD/BAT - [решено] удалить текст в каждой строке txt файла
|
Старожил Сообщения: 268 |
есть такой код
лог сохраняется многострочный но programm.exe выдает результат в виде таких строк: (если запущен в текущей папке --- programm.exe file.bin > log.txt) logging result: file.bin - 111 file.bin - 222222 ABC file.bin - 33333 file.bin - 4444444444444 end of logging logging result: C:\000\Очень длинная папка с пробелами\file.bin - 111 C:\000\Очень длинная папка с пробелами\file.bin - 222222 ABC C:\000\Очень длинная папка с пробелами\file.bin - 33333 C:\000\Очень длинная папка с пробелами\file.bin - 4444444444444 end of logging v1 - в данном случае заранее известное %NAME% имя файла --- "file.bin" или "C:\000\Очень длинная папка с пробелами\file.bin" --- удалить или заменить на "" v2 - узнать длину текста в переменной имени файла %NAME% (судя по этой теме задача тоже не в одну строку) --- в данном случае длина будет равна 8 или 47 --- и удалить с начала каждой строки это количество символов - пара тем с удалением 1 2 чтобы получилось что-то короткое типа: можно ли такое провернуть сразу после кода с вызовом программы? что-то типа: или такое можно сделать только в 2 bat файла? (один создание log.txt а второй его обрезка) |
|
Отправлено: 05:29, 25-04-2023 |
Старожил Сообщения: 268
|
Профиль | Отправить PM | Цитировать решение по v2
компиляция из найденных выше решений chcp 1251 @echo off programm.exe file.bin > log.txt call :len len "file.bin" Setlocal EnableDelayedExpansion for /f "usebackq delims=" %%a in ("log.txt") do ( set b=%%a set c=!b:~%len%! echo !c! >> "crop.txt" ) goto :eof :len set len=%~2 if not "%len%"=="" set /a %1+=1 & call :len %1 "%len:~1%" goto :eof |
Отправлено: 06:43, 25-04-2023 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата shadowbat:
всё результат: Цитата:
|
||
------- Отправлено: 08:59, 25-04-2023 | #3 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать Эта программа умеет только в файл выгружать или можно результат поместить в буфер обмена?
Можно тогда будет работать с буфером и обрабатывать его вместо создания промежуточного файла. Powershell А так - можно и универсальный вариант сделать, на Powershell это в 10 раз проще. Было logging result: C:\000\Очень длинная папка с пробелами\file.bin - 111 C:\000\Очень длинная папка с пробелами\file.bin - 222222 ABC C:\000\Очень длинная папка с пробелами\file.bin - 33333 C:\000\Очень длинная папка с пробелами\file.bin - 4444444444444 end of logging logging result: file.bin - 111 file.bin - 222222 ABC file.bin - 33333 file.bin - 4444444444444 end of logging Стало: |
------- Отправлено: 09:00, 25-04-2023 | #4 |
Старожил Сообщения: 268
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
|
||
Отправлено: 10:17, 25-04-2023 | #5 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 10:55, 25-04-2023 | #6 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать bat-файл
Имя программы, имя файла и лог файла пропишИте свои
|
------- Последний раз редактировалось megaloman, 25-04-2023 в 11:31. Отправлено: 11:21, 25-04-2023 | #7 |
Старожил Сообщения: 268
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
а на что влияют кавычки в первых трех строках? я их удалил, всё также работает (и с ними и без них) , обычно если и ставят кавычку то после равно? в отличие от первого bat-решения второе bat-решение: - создаётся не 2 лог файла а только 1 короткий - обрезается не все строки лога, а только те, где есть имя файла, т.е. более правильная обрезка - более точно передаются строки в лог и нет больше "Режим вывода команд на экран (ECHO) отключен." вместо некоторых "проблемных" строк - не работает с именем файла, у которого есть в имени "()", например fi(111)le.bin - код короче |
|
Последний раз редактировалось shadowbat, 25-04-2023 в 12:44. Отправлено: 12:15, 25-04-2023 | #8 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата shadowbat:
|
|
------- Отправлено: 14:27, 25-04-2023 | #9 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать shadowbat,
@Echo Off >nul Chcp 1251 Set "Prog=more.com" Set "FName=Z:\000\Очень длинная папка с пробелами\fi(111)le.bin" Set "Log=Z:\Box_Out\log.txt" >"%Log%" Echo "%FName%" For %%f In ("%FName%") Do Set "Name=*%%~xf - " Set "FN=%FName:(=^(%" Set "FN=%FN:)=^)%" >>"%Log%" 2>>&1 (For /F "usebackq delims=" %%f In (`""%Prog%" "%FN%""`) Do Set "Out=%%f" &Call Echo %%Out:%Name%= - %%) Exit /B |
------- Последний раз редактировалось megaloman, 25-04-2023 в 16:23. Отправлено: 15:55, 25-04-2023 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] добавить в конце каждой строки txt файла название самого файла | rwsct | Скриптовые языки администрирования Windows | 3 | 15-11-2021 05:01 | |
CMD/BAT - Удаление последнего символа в каждой строке txt - файла | Мария_Айдарова@vk | Скриптовые языки администрирования Windows | 14 | 01-08-2019 18:23 | |
Любой язык - как удалить любые две буквы между двумя знаками «>» и «/» в каждой строке в текстовом | sergey14235 | Скриптовые языки администрирования Windows | 4 | 25-04-2019 16:28 | |
CMD/BAT - [решено] Добавление к каждой строке из файла txt свой текст | Acred | Скриптовые языки администрирования Windows | 9 | 08-09-2016 04:53 | |
CMD/BAT - [решено] Удаление первых 9 символов в каждой строке TXT файла | pzh2393 | Скриптовые языки администрирования Windows | 1 | 18-05-2012 16:53 |
|