Показать полную графическую версию : [решено] Добавление текста
Raf-9600
05-04-2012, 00:24
Собстно мне необходимо добавить пару слов в txt файл, но без использования GUI. Т.е. условно "через батник". Такое возможно?
Нужно чтобы:
1. Текст добавлялся в первую свободную строку (т.е. НЕ с новой строчки).
2. Чтобы скрипт срабатывал, даже если текста в файле изначально нет (он может быть, а может и не быть).
3. Не удалял уже существующий текст в файле (если в нем есть текст)
4. Чтобы если файла не существует, скрипт его создавал (это не критично)
Morpheus
05-04-2012, 00:39
CMD/BAT - [решено] Дописать в конец файла (http://forum.oszone.net/nextoldesttothread-171287.html)
Raf-9600
05-04-2012, 00:50
А можно вариант, в котором текст записывался бы не с новой строчки, а просто в конец уже существующей?
Morpheus
05-04-2012, 00:58
CMD/BAT - [решено] как дописать текст в текстовой файл (http://forum.oszone.net/thread-183387.html)
Raf-9600
05-04-2012, 01:04
http://i25.fastpic.ru/big/2011/0725/ac/bae6b5acb4bc439f5ddf6c309166bcac.gif
P.S.
Сорри что сам забыл о возможности поиска по форуму :)
Raf-9600
09-04-2012, 14:52
CMD/BAT - [решено] как дописать текст в текстовой файл »
Протестировал тамтешние скрипты более детально и заметил одну неприятную особенность: они срабатывают, только если в txt файле уже есть текст, а мне нужно чтобы текст добавлялся независимо от этого.
В идеале вообще хотелось бы, чтобы если файл не найден, то батник его создавал...
Raf-9600, и что мешает сие сделать самостоятельно?
if exist "file.txt" (
…
) else (
…
)
Попробуй ECHO %DATE%.%TIME%.%1 обновлен успешно >> otchet.txt
Добавляю, запись с датой, временем и результатом выполнения скрипта в файл отчета, если файл не существует то создается новый, а если существует дописывается в конец файла. Вся хитрость в использовании "ECHO" с ">>", если оставить одну ">"то эта команда просто полностью перепишет уже существующий файл или создаст новый файл с текстом, однако ">>" дописывает текст в конец файла и может создавать новый файл с текстом если такого файла нет.
Raf-9600
09-04-2012, 15:40
Oleg48, для меня критично чтобы текст записывался не с новой строки, а с последней.
В смысле, дописывался в конец последней строки?
А что на CMD/BAT - [решено] как дописать текст в текстовой файл » примеры неработают, там вроде все просто. Может нужно переписать последнюю строку в текстовом файле?
Raf-9600
09-04-2012, 15:52
примеры неработают, там вроде все просто. »
Они срабатывают, только если в файле изначально есть хоть какой-то текст.
Raf-9600
09-04-2012, 16:48
Хм... Я придумал, как обойти проблему. Можно создать файл с одним символом, допустим с "-", потом воспользоваться скриптами из темы CMD/BAT - [решено] как дописать текст в текстовой файл » а потом удалить этот "-". Собсно вопрос: как из блокнота удалить один конкретный символ?
Raf-9600, создавайте пустой файл:
>nul copy nul file.txt
Raf-9600
09-04-2012, 18:06
создавайте пустой файл: »
Создание пустого файла, это не настолько важна проблема как:
1. Добавление текста в первую строчку файла, вне зависимости от того пустой он или нет. (Т.е. НЕ с новой строки)
2. Удаление одного конкретного символа из файла.
Если бы одну из этих проблем решить, было бы очень круто (^_^)
Raf-9600, сделал через "точку"
@Echo Off
set fail=123.txt
set tekct=Этот текст надо дописать
IF NOT exist %fail% (echo .>%fail%)
For /F "tokens=*" %%i In (%fail%) Do Set ti=%%i
Set new=%ti:.=%
Set new=%new%%tekct%
Echo %new%>123.txt
Raf-9600, для удовлетворения подобных требований пакетные файлы без использования сторонних утилит не слишком годятся. Рассмотрите вопрос о переходе к WSH/PoSH.
2Oleg48:
1. Зачем Вы добавляете в конец почти каждой строки пакетного файла по два пробела?
2. Проверьте, например, Ваш код на таком файле:
He.ll.o Wo.r.ld!
He.ll.o Wo.r.ld!
и посмотрите, во что он превратится.
Raf-9600
09-04-2012, 19:26
сделал через "точку" »
То, что нужно! Благодарю.
для удовлетворения подобных требований пакетные файлы без использования сторонних утилит не слишком годятся. Рассмотрите вопрос о переходе к WSH/PoSH. »
Честно говоря, я это и предполагал, поэтому создал эту тему в другом разделе, но модераторам показалось, что батники меня спасут, и они перенесли её сюда :)
поэтому создал эту тему в другом разделе, но модераторам показалось, что батники меня спасут, и они перенесли её сюда »
Спасибо, ясно. Возможно, потому, что изначально не все требования ТЗ были озвучены.
Morpheus
09-04-2012, 22:33
Можно и без точек.
@Echo Off
set file=D:\123.txt
set text=text
For /F "tokens=*" %%i In (%file%) Do Set ti=%%i%text%
if "%ti%"=="" (
echo %text%>%file%
) else (
echo %ti%>%file%
)
pause
Morpheus, то же — в файле остаётся одна строка.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC