Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Редактирование файлов (вырезать, вставить, массово)
Goto page Previous  1, 2, 3, 4, 5  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
qwerty



Joined: 26 May 2009
Posts: 22

Post (Separately) Posted: Tue Dec 21, 2010 17:25    Post subject: Reply with quote

Я уезжал, не успел закончить, сейчас продолжаю.

Продолжил с того, на чем остановился и сразу получилось.
Tol!k wrote:
Code:
ssed.exe -i.bak -r "s/^[ \[\$]*(.*\.)[^\.]*$/YOURPREFIX\1/" *.txt

Работает как надо.

Всем большое спасибо за участие! И с наступающем.
Back to top
View user's profile Send private message
qwerty



Joined: 26 May 2009
Posts: 22

Post (Separately) Posted: Wed Dec 22, 2010 01:49    Post subject: Reply with quote

А где можно посмотреть, как правильно писать то, что будет удалено при исполнение
Code:
ssed.exe -i.bak -r "s/^[ \[\$]*(.*\.)[^\.]*$/YOURPREFIX\1/" *.txt


Мне нужно убирать помимо пробела все английские буквы, цифры и символы <>:;="/.-'
Пытаюсь прописать в квадратных скобках, а не получается.
Back to top
View user's profile Send private message
qwerty



Joined: 26 May 2009
Posts: 22

Post (Separately) Posted: Wed Dec 22, 2010 21:20    Post subject: Reply with quote

С предыдущим вопросом разобрался. Получилось.
Еще оказалось, что в некоторых файлах конец строки заканчивается ненужными символами, которые идут с точкой. Соответственно удаление происходит до точки без учета этих ненужных символов. Можно ли используя команду, приведенную Tol!k'ом сделать так: если в конце строки перед точкой идут цифры, символы или англ. буквы, то после точки добавлять определенные символы. А если до точки идут русские буквы, то ничего не делать кроме удаления мусора, как сейчас.

Какая часть этой команды отвечает за конец строки?
Code:
ssed.exe -i.bak -r "s/^[ \[\$]*(.*\.)[^\.]*$/YOURPREFIX\1/" *.txt
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Fri Dec 24, 2010 21:02    Post subject: Reply with quote

Попробуй ssed.exe -i.old -r "s/(\B[^А-я]*\.)$/\1POSTFIX/" *.txt
= если последнее слово не кончается кириллицей, то добавить POSTFIX
*Кодировка символов А-я в команде должна совпадать с оной в файлах.

Про регулярные выражения можно прочитать в справке ТС.
Code:
Вот список наиболее важных метасимволов:
^   Начало строки.
$   Конец строки.
.   Любой символ.
\w   Алфавитно-цифровой символ или знак подчёркивания '_'.
\W   Дополнение к \w, т.е. любой символ, кроме алфавитно-цифровых и подчёркивания.
\d   Цифра.
\D   Дополнение к \d (не цифра).
\s   Разделитель между словами (пробел, табуляция и пр.).
\S   Дополнение к \s (любой символ, кроме разделителей).
\b   Указывает границу слова.
\B   Указывает, что данная позиция не является границей слова.
Back to top
View user's profile Send private message
qwerty



Joined: 26 May 2009
Posts: 22

Post (Separately) Posted: Sat Dec 25, 2010 18:12    Post subject: Reply with quote

Спасибо, Tol!k. Работает.
Сейчас вроде больше ничего не надо. Т.е. надо, но самому много время уйдет делать.
Хочу в файлы, в конец вставлять строку кода, которая будет браться из подготовленного файла. Т.е. есть пять файлов и один подготовленный файл с пятью строками кода. Надо из подготовленного файла брать строку и вставлять ее в один из пяти файлов. Код который надо вставлять это код видео с youtube.
Как total commander при групповом переименовывание может брать названия для файлов из файла.
Есть есть решение, буду рад ссылки.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun Dec 26, 2010 05:56    Post subject: Reply with quote

qwerty wrote:
Хочу в файлы, в конец вставлять строку кода, которая будет браться из подготовленного файла.
Отдельной строкой или дописать к существующей?
Примеры имён файлов и кода для вставки...
Back to top
View user's profile Send private message
qwerty



Joined: 26 May 2009
Posts: 22

Post (Separately) Posted: Sun Dec 26, 2010 16:49    Post subject: Reply with quote

Tol!k wrote:
Отдельной строкой или дописать к существующей?

Как лучше, я не знаю. Если без разницы, то лучше отдельной.
Tol!k wrote:
Примеры имён файлов и кода для вставки...

1.txt
2.txt
3.txt
...
подготовленный файл с кодами - kod.txt
код такой
Code:
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/Hv8gqj3kzg4?fs=1&amp;hl=ru_RU"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Hv8gqj3kzg4?fs=1&amp;hl=ru_RU" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun Dec 26, 2010 17:24    Post subject: Reply with quote

Отдельной строкой проще.
Code:
@echo off &chcp 1251 >nul
setlocal enableextensions enabledelayedexpansion

set "str=kod.txt"

set /a cnt=1
for /f "usebackq delims=" %%a in ("%str%") do (
echo.%%a>>!cnt!.txt
set /a cnt+=1
)
Back to top
View user's profile Send private message
Jonmey



Joined: 27 Sep 2010
Posts: 42

Post (Separately) Posted: Sun Mar 06, 2011 21:56    Post subject: Reply with quote

Кто-нибудь знает, как заменить в бинарном файле в искомой строке подстроку? То есть, речь идет от патчере работающем в режиме s&r -ищется заданный паттерн бинарной строки и заменяется ее часть. Таких строк м.б. несколько и их вхождений в каждом файте - тоже.
Однако все обрабатываемые файлы одного типа и их расширения м.б. заданы маской.
Необходимо, чтобы это решение можно было прикрутить на кнопку ТС стандартным образом для обработки, или выделенных файлов, или всех файлов в папке.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun Mar 06, 2011 22:36    Post subject: Reply with quote

Конкретизируйте.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Mar 06, 2011 22:46    Post subject: Reply with quote

Для выделенных файлов скрипт Batya как раз и решает описанное. А маску можно задать в ТС на выделение (cm_SelectFiles), это не проблема.
Back to top
View user's profile Send private message
Jonmey



Joined: 27 Sep 2010
Posts: 42

Post (Separately) Posted: Sun Mar 06, 2011 23:40    Post subject: Reply with quote

Например, в папке лежит несколько файлов вида
Code:
file1.ext
file2.ext
file3.ext

В них нужно найти заменить бинарные строки, типа:

Code:
D1 F2 F0 EE EA E0 5F 31 5F EA EE F2 EE F0 F3 FE 5F E8 F9 E5 EC ?? ?? ?? ?? ??

(где ?? - любой байт)

на

Code:
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? D1 F2 F0 EE EA


(где ?? означает, что соответствующий байт отстается неизменным при замене).

Таких пар замен несколько, и их вхождений в каждом файле тоже может быть несколько.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Mar 07, 2011 00:03    Post subject: Reply with quote

Стоило сразу указать на шестнадцатеричный формат представления. Я бы пока этой прогой воспользовался.
Back to top
View user's profile Send private message
Jonmey



Joined: 27 Sep 2010
Posts: 42

Post (Separately) Posted: Mon Mar 07, 2011 00:26    Post subject: Reply with quote

Quote:
Стоило сразу указать на шестнадцатеричный формат представления.

Quote:
Кто-нибудь знает, как заменить в бинарном файле в искомой строке подстроку?


Quote:
Я бы пока этой прогой воспользовался.

Нужен способ как это сделать из командной строки, то есть без гуишного фейса, поскольку речь идет не об одном файле или группе файлов, а о мнгочисленных файлах разбросанных в разных местах, и если пользоваться каждый раз оконной программой (коих миллион), то никаких, ни сил, ни терпения не хватит.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Mar 07, 2011 00:38    Post subject: Reply with quote

Jonmey
Бинарность файла не указывает на то, в каком формате нужно обрабатывать этот файл.
Что касаемо группы файлов, то не вижу проблем - жмётся Ctrl+O и вперёд. Причём тут гуишность...
Миллион? Да хотя бы указание на парочку других подобных (Asc + Dec + Hex) уже станет для меня прозрением. Вперёд.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5  Next
Page 2 of 5

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group