View previous topic :: View next topic |
Author |
Message |
vegg
Joined: 10 May 2011 Posts: 2
|
(Separately) Posted: Tue May 10, 2011 15:13 Post subject: Вставка текста |
|
|
Есть около 600 текстовых файлов, нужно вставить в конце каждого файла один и тот же текст.
Каким образом можно это реализовать? |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Tue May 10, 2011 15:42 Post subject: |
|
|
Текст большой? Можно бат-файлом, если не очень большой.
Создать бат-файл с любым именем, перетащить на панель инструментов, в параметрах прописать %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 |
|
 |
vegg
Joined: 10 May 2011 Posts: 2
|
(Separately) Posted: Tue May 10, 2011 15:57 Post subject: |
|
|
Сейчас попробую.
текст в 3 строки всего.
Добавлено спустя 8 минут 17 секунд:
Так
а если у меня текст состоит из функций, которые совпадают с функциями батника, в общем вот текст:
Quote: | <?php add_action('wp_footer', 'mth');
function mth() { $content =' · <a href="http://xxx/" target="_blank">xxx</a> · ';
echo $content;} ?> |
Добавлено спустя 4 минуты 46 секунд:
Перетащить на панель инструментов // не совсем понял как это делается. |
|
Back to top |
|
 |
alexey65536

Joined: 20 Jan 2006 Posts: 1056 Location: Taganrog
|
(Separately) Posted: Tue May 10, 2011 16:33 Post subject: |
|
|
Если там функции совпадают, то 1-й вариант (с текстом в теле батника) работать не будет, а 2-й должен _________________ #199018 |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Tue May 10, 2011 16:54 Post subject: |
|
|
Похожая задача. Модераторы, м.б. подклеить?
Ну или переименовать, потому что задача всё таки не "вставить" (в середину), а "дописать" (в конец)
vegg
для всех .txt
Code: | for %%a in ("d:\путь\*.txt") do type "d:\добавь меня.txt">>"%%a" |
просто запустить батник |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Tue May 10, 2011 18:29 Post subject: |
|
|
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 =' · <a href=""http://xxx/"" target=""_blank"">xxx</a> · ';"
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 |
|
 |
GGS
Joined: 02 May 2009 Posts: 322
|
(Separately) Posted: Tue May 10, 2011 20:39 Post subject: |
|
|
Друзья, что-то у вас "глаз замылился".
Создаём файл с добавочным текстом (add) и плюсуем его к имеющемуся
COPY file.ext + add file.ext /B
Организация списка или цикла - по вкусу.
Например, если исходные файлы *.txt:
FOR %i IN (*.txt) DO COPY "%i"+add "%i" /B
при использовании в командном файле %i заменить на %%i т.е. удвоить символ % |
|
Back to top |
|
 |
Моторокер

Joined: 06 May 2005 Posts: 1517 Location: г. Пермь (читается Перьмь)
|
(Separately) Posted: Tue May 17, 2011 00:02 Post subject: |
|
|
Может удобней использовать спец. приложения, например SBReplacer? _________________ плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми |
|
Back to top |
|
 |
SaDim
Joined: 22 May 2011 Posts: 18
|
(Separately) Posted: Fri May 27, 2011 00:30 Post subject: |
|
|
MVV wrote: | Создать бат-файл с любым именем, перетащить на панель инструментов |
Подскажите, пожалуйста, как добавить текст в начало файла? |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Fri May 27, 2011 09:30 Post subject: |
|
|
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 |
|
 |
|