Страница 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
Но можно извратиться и вручную замаскировать все служебные символы.

Но что второй вариант удобнее - никто и не спорит.
Кстати, %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"
пробел путь к файлу с вставляемым текстом: