Страница 1 из 1

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

Добавлено: Вт май 10, 2011 15:13
vegg
Есть около 600 текстовых файлов, нужно вставить в конце каждого файла один и тот же текст.

Каким образом можно это реализовать?

Добавлено: Вт май 10, 2011 15:42
MVV
Текст большой? Можно бат-файлом, если не очень большой.

Создать бат-файл с любым именем, перетащить на панель инструментов, в параметрах прописать %WL, выделить на панели все эти 600 файлов и нажать кнопку.

Код: Выделить всё

@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 говорит, что текст нужно дописать в конец файла (если знак > только один, то файлы будут очищаться перед выводом текста, что нам не нужно).

Если дописывать нужно реально много, проще будет брать дописываемые данные из другого файла:

Код: Выделить всё

@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". И не забывать, что если первая строка этого файла не пустая, то текст может дописываться не с новой строки.

Разумеется, перед применением ко своим файлам рекомендую потренироваться на копиях.

Добавлено: Вт май 10, 2011 16:10
vegg
Сейчас попробую.
текст в 3 строки всего.

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

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

Перетащить на панель инструментов // не совсем понял как это делается.

Добавлено: Вт май 10, 2011 16:33
alexey65536
Если там функции совпадают, то 1-й вариант (с текстом в теле батника) работать не будет, а 2-й должен:)

Добавлено: Вт май 10, 2011 16:43
MVV
Но можно извратиться и вручную замаскировать все служебные символы. :D
Но что второй вариант удобнее - никто и не спорит.

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

А для TC 7.04a и младше - "%l" вместо "%WL". Но обновить до TC 7.56a тоже стоит.

Добавлено: Вт май 10, 2011 16:54
Tol!k
Похожая задача. Модераторы, м.б. подклеить?
Ну или переименовать, потому что задача всё таки не "вставить" (в середину), а "дописать" (в конец)

vegg
для всех .txt

Код: Выделить всё

for %%a in ("d:\путь\*.txt") do type "d:\добавь меня.txt">>"%%a"
просто запустить батник

Добавлено: Вт май 10, 2011 18:29
Batya
vegg
vbs:

Код: Выделить всё

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

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

' Пример параметров при вызове из 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".
Если в тексте содержатся кавычки, их нужно задвоить (как во второй строке примера).

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

Организация списка или цикла - по вкусу.
Например, если исходные файлы *.txt:
FOR %i IN (*.txt) DO COPY "%i"+add "%i" /B
при использовании в командном файле %i заменить на %%i т.е. удвоить символ %

Добавлено: Вт май 17, 2011 00:02
Моторокер
Может удобней использовать спец. приложения, например SBReplacer?

Добавлено: Пт май 27, 2011 00:30
SaDim
MVV писал(а):Создать бат-файл с любым именем, перетащить на панель инструментов
Подскажите, пожалуйста, как добавить текст в начало файла?

Добавлено: Пт май 27, 2011 09:30
MVV
SaDim, нужно создавать временную копию обрабатываемого файла, затем копировать на место оригинала файл со вставляемым текстом и дописывать к нему созданную копию - получится, что текст добавлен в начало файла. Временную копию потом удалить.

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

Код: Выделить всё

@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" пробел путь к файлу с вставляемым текстом:

Код: Выделить всё

"%WL" "C:\InsertText.txt"