|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как удалить последнюю строку в текстовом файле? |
|
CMD/BAT - [решено] Как удалить последнюю строку в текстовом файле?
|
Новый участник Сообщения: 32 |
Добрый день, люди добрые помогите, что-то я вообще запутался.
Как удалить последнюю строку в файле? Строку эту я знаю. Файл 100001.txt Или можно выполнить dir без последней строки(файла) |
|
Отправлено: 16:03, 20-02-2014 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Можно извратиться вот так, при этом последнее имя файла из Dir не попадёт в текстовый файл
@Echo Off Set "File=100001.txt" Set "Mask=20??????.jrn" SetLocal EnableExtensions EnableDelayedExpansion Set "String='" FOR /F "usebackq delims=" %%i in (`Dir "%Mask%" /b /A:-D /O:N 2^>nul`) Do If !String!==' (Set "String=%%i"&Del "%File%" 2>Nul) Else (Echo !String!>>"%File%"&Set "String=%%i") @Echo Off Set "File=100001.txt" Set "Mask=20??????.jrn" SetLocal EnableExtensions EnableDelayedExpansion Set "String='" FOR /F "usebackq delims=" %%i in (`Dir "%Mask%" /b /A:-D /O:N 2^>nul`) Do ( If !String!==' ( Set "String=%%i" Del "%File%" 2>Nul ) Else ( Echo !String!>>"%File%" Set "String=%%i" ) ) |
------- Последний раз редактировалось megaloman, 21-02-2014 в 20:13. Отправлено: 19:51, 21-02-2014 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать "Немного экзотики"...
Использование команды "fc": @echo off set text_file=100001.txt for /f %%i in ('find /c /v ""^<"%text_file%"') do set /a n=%%i-1 >nul copy nul 0.tmp >1.tmp fc /lb%n% 0.tmp "%text_file%" >2.tmp<1.tmp more +4 >3.tmp<2.tmp find /v "*****" del 0.tmp 1.tmp 2.tmp >nul move "%text_file%" "%text_file%.bak" >nul move 3.tmp %text_file% В случае использования только двух временных файлов в конце переписанного файла будут две лишние пустые строки: |
Отправлено: 20:19, 21-02-2014 | #12 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
вопрос, а как его подправить, что бы он обрабатывал несколько файлов? |
|
Отправлено: 10:05, 14-09-2018 | #13 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Anufriev, Неужели это я писал? Задача решалась применительно к конкретной ситуации (это я свою совесть успокаиваю). Боюсь, возможны косяки, если есть пустые строки и всякие спецсимволы.
Цитата Anufriev:
Если тупо и не думать, организуем процедуру и в неё будем передавать имена файлов @Echo Off SetLocal EnableExtensions EnableDelayedExpansion Call :LastDel "100001.txt" Call :LastDel "D:\тра ля ля\1200001.txt" Call :LastDel "\\Server\Share\ogogo.ini" GoTo :Eof :LastDel Set "File=%~1" Set "String='" FOR /F "usebackq delims=" %%i in (`Type "%File%"`) Do If !String!==' (Set "String=%%i"&Del "%File%" 2>Nul) Else (Echo !String!>>"%File%"&Set "String=%%i") GoTo :Eof Если это все файлы по какой-то маске в определённой папке, возможно организация For c тем же вызовом процедуры - уточните задачу, если надо. Опять же, работая с текстом в CMD, можно хорошо вляпаться. |
|
------- Последний раз редактировалось megaloman, 14-09-2018 в 12:27. Отправлено: 12:19, 14-09-2018 | #14 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
------- Отправлено: 20:20, 14-09-2018 | #15 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
![]() Цитата megaloman:
файлы имеют маску *.xml находятся в одной папке, при удалении строки копируются в другую папку содержимое разнообразное, но всегда нужно удалить последнюю строку (подпись) она тоже меняется p.s. может и правда отдельную тему создать, что-бы людям проще было найти (я посчитал, что можно небольшой корректировкой кода обойтись, наивный?) ![]() |
||
Последний раз редактировалось Anufriev, 15-09-2018 в 09:55. Отправлено: 06:21, 15-09-2018 | #16 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Anufriev:
Но что мешает стремиться к лучшему? ![]() |
|
------- Отправлено: 13:42, 15-09-2018 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ориентироваться на строки в xml-файлах… Я бы не стал.
|
Отправлено: 17:10, 15-09-2018 | #18 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
p.s. Естественно данный занулены |
|
Последний раз редактировалось Anufriev, 17-09-2018 в 05:16. Отправлено: 05:08, 17-09-2018 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Anufriev:
Цитата Anufriev:
Скрытый текст
Option Explicit Dim strSourceFolder Dim objFSO Dim objFile Dim arrContent If WScript.Arguments.Count = 1 Then strSourceFolder = WScript.Arguments.Item(0) Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(strSourceFolder) Then For Each objFile In objFSO.GetFolder(strSourceFolder).Files If StrComp(objFSO.GetExtensionName(objFile.Name), "xml", 0) = 0 Then With objFSO.OpenTextFile(objFile.Path) arrContent = Split(.ReadAll(), vbCrLf) .Close End With ReDim Preserve arrContent(UBound(arrContent) - 1) objFile.Copy objFSO.BuildPath(strSourceFolder, objFSO.GetBaseName(objFile.Name) & ".bak"), True With objFSO.CreateTextFile(objFile.Path, True) .Write Join(arrContent, vbCrLf) & vbCrLf .Close End With Else ' Nothing to do End If Next Else WScript.Echo "Can't find source folder [" & strSourceFolder & "]." WScript.Quit 2 End If Set objFSO = Nothing Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>" WScript.Quit 1 End If WScript.Quit 0 |
||
Отправлено: 05:50, 17-09-2018 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Удалить пустую строку в файле .txt | denntl | Скриптовые языки администрирования Windows | 2 | 18-07-2013 11:48 | |
Любой язык - [решено] Как выделить каждую определенною строку в текстовом файле | KooDI | Скриптовые языки администрирования Windows | 6 | 05-03-2013 21:47 | |
VBS/WSH/JS - [решено] Как изменить конкретную строку в текстовом файле с помощью Vbscript | neo21 | Скриптовые языки администрирования Windows | 8 | 30-10-2011 15:47 | |
CMD/BAT - [решено] Удалить в текстовом файле по условию | AlexVong | Скриптовые языки администрирования Windows | 1 | 21-11-2010 11:53 | |
[решено] Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте? | Pozia | AutoIt | 23 | 14-05-2009 21:41 |
|