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 

Вставка текста

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
vegg



Joined: 10 May 2011
Posts: 2

Post (Separately) Posted: Tue May 10, 2011 15:13    Post subject: Вставка текста Reply with quote

Есть около 600 текстовых файлов, нужно вставить в конце каждого файла один и тот же текст.

Каким образом можно это реализовать?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Tue May 10, 2011 15:42    Post subject: Reply with quote

Текст большой? Можно бат-файлом, если не очень большой.

Создать бат-файл с любым именем, перетащить на панель инструментов, в параметрах прописать %WL, выделить на панели все эти 600 файлов и нажать кнопку.
Code:
@echo off
if -%1==-go goto go
if -%1==- echo Params: %%WL & pause & goto :EOF
for /f "usebackq delims=" %%f in (`type %1`) do call %0 go "%%f"
pause
goto :EOF

:go
echo.>>%2
echo.>>%2
echo Первая строка для дописывания к файлам>>%2
echo Вторая строка для дописывания к файлам>>%2

Здесь echo. (без пробела) выводит переход на новую строку, echo с текстом выводит текст, а >>%2 говорит, что текст нужно дописать в конец файла (если знак > только один, то файлы будут очищаться перед выводом текста, что нам не нужно).

Если дописывать нужно реально много, проще будет брать дописываемые данные из другого файла:
Code:
@echo off
if -%1==-go goto go
if -%2==- echo Params: %%WL "X:\Path\To\File\With\Text.txt" & pause & goto :EOF
if not exist %2 echo Text file %2 not found! & pause & goto :EOF
for /f "usebackq delims=" %%f in (`type %1`) do call %0 go "%%f" %2
pause
goto :EOF

:go
if exist %3 type %3>>%2

В параметрах кнопки указать %WL "X:\Путь\К\Файлу\С\Дописываемым\Текстом.txt". И не забывать, что если первая строка этого файла не пустая, то текст может дописываться не с новой строки.

Разумеется, перед применением ко своим файлам рекомендую потренироваться на копиях.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…


Last edited by MVV on Tue May 10, 2011 15:57; edited 1 time in total
Back to top
View user's profile Send private message
vegg



Joined: 10 May 2011
Posts: 2

Post (Separately) Posted: Tue May 10, 2011 15:57    Post subject: Reply with quote

Сейчас попробую.
текст в 3 строки всего.

Добавлено спустя 8 минут 17 секунд:

Так
а если у меня текст состоит из функций, которые совпадают с функциями батника, в общем вот текст:
Quote:
<?php add_action('wp_footer', 'mth');
function mth() { $content =' &middot; <a href="http://xxx/" target="_blank">xxx</a> &middot; ';
echo $content;} ?>


Добавлено спустя 4 минуты 46 секунд:

Перетащить на панель инструментов // не совсем понял как это делается.
Back to top
View user's profile Send private message
alexey65536



Joined: 20 Jan 2006
Posts: 1056
Location: Taganrog

Post (Separately) Posted: Tue May 10, 2011 16:33    Post subject: Reply with quote

Если там функции совпадают, то 1-й вариант (с текстом в теле батника) работать не будет, а 2-й долженSmile
_________________
#199018
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Tue May 10, 2011 16:43    Post subject: Reply with quote

Но можно извратиться и вручную замаскировать все служебные символы. Very Happy
Но что второй вариант удобнее - никто и не спорит.

Кстати, %WL в кавычках лучше.

А для TC 7.04a и младше - "%l" вместо "%WL". Но обновить до TC 7.56a тоже стоит.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…


Last edited by MVV on Tue May 10, 2011 17:05; edited 2 times in total
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Tue May 10, 2011 16:54    Post subject: Reply with quote

Похожая задача. Модераторы, м.б. подклеить?
Ну или переименовать, потому что задача всё таки не "вставить" (в середину), а "дописать" (в конец)

vegg
для всех .txt
Code:
for %%a in ("d:\путь\*.txt") do type "d:\добавь меня.txt">>"%%a"

просто запустить батник
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Tue May 10, 2011 18:29    Post subject: Reply with quote

vegg
vbs:
Code:
'=====================================================
' Добавление нескольких строк в файлы из файла-списка

' Параметры:
' {файл-список}

' Пример параметров при вызове из TC:
' %L
'=====================================================

Dim FSO, F, FF
Set FSO = CreateObject("Scripting.FileSystemObject")

With FSO.OpenTextFile(WScript.Arguments(0), 1)
  Do While Not .AtEndOfStream
    F = Trim(.ReadLine)
    If F <> "" Then
      If FSO.FileExists(F) Then
        Set FF = FSO.OpenTextFile(F, 8, True)
        FF.WriteLine "<?php add_action('wp_footer', 'mth');"
        FF.WriteLine "function mth() { $content =' &middot; <a href=""http://xxx/"" target=""_blank"">xxx</a> &middot; ';"
        FF.WriteLine "echo $content;} ?>"
        FF.Close
      End If
    End If
  Loop
  .Close
End With

Set FF  = Nothing
Set FSO = Nothing
Wscript.Quit()

Содержимое строк указываем внутри скрипта после "FF.WriteLine".
Если в тексте содержатся кавычки, их нужно задвоить (как во второй строке примера).
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
GGS



Joined: 02 May 2009
Posts: 322

Post (Separately) Posted: Tue May 10, 2011 20:39    Post subject: Reply with quote

Друзья, что-то у вас "глаз замылился".
Создаём файл с добавочным текстом (add) и плюсуем его к имеющемуся
COPY file.ext + add file.ext /B

Организация списка или цикла - по вкусу.
Например, если исходные файлы *.txt:
FOR %i IN (*.txt) DO COPY "%i"+add "%i" /B
при использовании в командном файле %i заменить на %%i т.е. удвоить символ %
Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1517
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Tue May 17, 2011 00:02    Post subject: Reply with quote

Может удобней использовать спец. приложения, например SBReplacer?
_________________
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Back to top
View user's profile Send private message
SaDim



Joined: 22 May 2011
Posts: 18

Post (Separately) Posted: Fri May 27, 2011 00:30    Post subject: Reply with quote

MVV wrote:
Создать бат-файл с любым именем, перетащить на панель инструментов

Подскажите, пожалуйста, как добавить текст в начало файла?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Fri May 27, 2011 09:30    Post subject: Reply with quote

SaDim, нужно создавать временную копию обрабатываемого файла, затем копировать на место оригинала файл со вставляемым текстом и дописывать к нему созданную копию - получится, что текст добавлен в начало файла. Временную копию потом удалить.

Что-то вроде:

Code:
@echo off
if -%1==-go goto go
if -%2==- echo Params: "%%WL" "X:\Path\To\File\With\Text.txt" & pause & goto :EOF
if not exist %2 echo Text file %2 not found! & pause & goto :EOF
for /f "usebackq delims=" %%f in (`type %1`) do call %0 go "%%f" %2
pause
goto :EOF

:go
if not exist %3 goto :EOF
set tmpname=%TEMP%\~tmpfile-%random%~
copy %2 "%tmpname%">nul
copy /b %3 + "%tmpname%" %2>nul
del "%tmpname%"

Перетащить батник на панель инструментов, очистить поле рабочей папки и написать в параметрах "%WL" пробел путь к файлу с вставляемым текстом:
Code:
"%WL" "C:\InsertText.txt"

_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
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
Page 1 of 1

 
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