Как очистить файл через cmd

Это мой файл TXT:

Volume in drive N is ABSdrive
Volume Serial Number is BLA – BLA

Directory of n:ggggggggggggggg

25/10/2016 09:46 138,813 gggggg.csv
1 File(s) 00000 bytes
0 Dir(s) 00000000 bytes free

Мне нужен файл .txt ТОЛЬКО с этой строкой

Никаких пустых строк вверху или внизу, только текстовый файл с одной строкой с этой информацией.

Есть ли способ сделать это с помощью файла .bat?

Всем привет! В интернете много где пишут, как удалить файл через командную строку. А что если файлов много, а папку Вы не можете удалить (например, она нужна для работы какого-то ПО) или же просто . Этот нюанс не везде описан. Сейчас я расскажу, как командная строка может очистить содержимое папки без ее удаления

Буду показывать Вам на примере очистки кэша обновлений Windows в папке

1. Запускаем командную строку и переходим в нужную нам папку.

Вводим команду для удаления (ключ /s – удаление дерева каталогов (и подкаталогов) в папке, а ключ /q – отключает запрос на подтверждение удаления для каждого каталога -в формате y/n).

rd
C:WindowsSoftwareDistributionDownload /s /q


Как очистить файл через cmd

Пусть Вас не смущает надпись о том, что “Процесс не может получить доступ к файлу, так как этот файл занят другим процессом” – в этом и заключается главный трюк. Мы не можем удалить папку, в которой находимся в данный момент. А вот файлы, которые лежат в папке будут удалены подчистую.

Собственно, в моем случае результат следующий: системная папка для загрузки обновлений (Download) на месте, и она пустая (хотя в ней, порою, накапливается довольно большое количество папок с обновлениями).

Теперь Вы убедились в том, как cmd помогает очистить папку!

Команда RMDIR (RD) – удалить каталог файловой системы Windows.

Формат командной строки:

/S – Удаление дерева каталогов, т. е. не только указанного каталога, но и всех содержащихся в нем файлов и подкаталогов.

/Q – Отключение запроса подтверждения при удалении дерева каталогов с помощью ключа /S.

Примеры использования команды RD ( RMDIR)

RD C:Mydocs C:Myprogs – выполнить удаление содержимого папок C:Mydocs и C:Myprogs.

RD C:docs – выполнить удаление папки C:docs. Если параметр /S не задан, то удаляемая папка C:docs должна быть пустой.

RD /S /Q C:Docs – удаление папки C:Docs и всех ее подпапок без запроса на подтверждение.

Особенность реализации команды RD с параметром /S заключается в том, что будут удалены не только подкаталоги, но и сам каталог C:Docs, даже если в нем существовали файлы, а не подпапки. Поэтому, для
удаления только содержимого каталога ( когда требуется сделать каталог пустым, а не удалить его совсем), можно воспользоваться следующим приемом – сделать
удаляемый каталог текущим и выполнить команду RD по отношению к его содержимому:

:/>  Темы для Windows 10 скачать

CD “My Folder”

RD /s/q “My Folder”

Ниже приведенный командный файл удаляет пустые папки в каталоге временных файлов,
определяемом значением переменной окружения TEMP. Список удаленных папок записывается в файл с именем c: empfoldersempty.txt

FOR /D %%i in (*) do (

Весь список команд CMD Windows

DEL (ERASE)

имена – Имена одного или нескольких файлов. Для удаления сразу нескольких файлов используются подстановочные знаки. Если указан каталог, из него будут удалены все файлы.

/P – Запрос на подтверждение перед удалением каждого файла.

/F – Принудительное удаление файлов, доступных только для чтения.

/S – Удаление указанных файлов из всех подкаталогов.

/Q – Отключение запроса на подтверждение при удалении файлов.

/A – Отбор файлов для удаления по атрибутам.

S – Системные файлы
R – Доступные только для чтения
H – Скрытые файлы
A – Файлы для архивирования
Префикс “-” имеет значение НЕ – например -H – не скрытый файл.

erase D:myfile.txt – удалить файл D:myfile.txt
erase D: – удалить все файлы в корневом каталоге диска D:
erase D:*.bak – удалить все файлы с расширением .bak
в корневом каталоге диска D:
erase D:iles – удалить все файлы в каталоге files диска D: – будут удалены
все файлы, не имеющие хотя бы один из атрибутов скрытый (H) , системный (S) и
только чтение ( R )
del /A:h d:iles*.htm – удалить все файлы с расширением htm и атрибутом
скрытый в каталоге D:iles . Файлы, не имеющие атрибута скрытый или
имеющие, дополнительно к нему, другие атрибуты, удаляться не будут.
del /A:hsra d:iles* – удалить все файлы с установленным набором атрибутов H , S, R, A

del d:iles?d?* – удалить файлы, имеющие в имени символ d и любое расширение.
del /S /F /Q %TEMP%*.tmp – очистка каталога временных файлов.
Будут удалены все временные файлы с расширением .tmp в каталоге
для временных файлов и всех его подкаталогах без запроса на подтверждение
удаления.

Присвоить переменной значение пробел

set “charlist= ”

Извлечение подстроки с конца строки

(часто этот прием используют для удаления окаймляющих кавычек)

Удаление подстроки в строке

В данном примере из строки будет удалена подстрока “кожа ”

Удаление всех пробелов в строке

Как вариант предыдущего примера

Замена подстроки в строке

Глядя на этот пример не составит трудности написать процедуру
обратного преобразования.

——————————————————————————————————-

ЗАМЕНА ОДНОЙ ПОДСТРОКИ НА ДРУГУЮ В ФАЙЛЕ

Такую задачу можно решить без использования сторонних программ, только средствами bat !
Ниже приведен пример с использованием локальной процедуры txtrepl

Вывод на экран, в файл текста без перевода строки

Использование этого приема в сочетании с символом backspace (код 08)
позволяет сделать вывод на экран изменяемого текста и как вариант – “вращающейся палки”.

:/>  Как открыть папку zip и сохранить полученные файлы | Блог Айтишнега

Вычисление длины строковой переменной

В bat/cmd командах нет функции, позволяющей вычислять длину строковой переменной.
А такая задача возникает не так уж и редко. Однако средств командного языка
достаточно, для того что бы решить такую задачу,
не прибегая к использованию специальных программ.
Рассмотрим несколько вариантов решения данной задачи:

:var_count2
set /a %2 =0
set var=%~1
:startvarcount
if not defined var exit /b
set var=%var:~1%
set /a %2+=1
goto startvarcount
exit /b

Еще один вариант вычисления длины строковой переменной:

:StringLen
:: ———————–
:: Нахождение длины строки
:: ———————–
:: %1 – текстовая строка
:: ———————–
Set $StringLen=0
Set $StringBuf=%~1
If “”==”%~1” GoTo :EOF
:StringLenLoop
Set /A $StringLen+=1
Call Set $StringChr=%%$StringBuf:~%$StringLen%%%
If “”==”%$StringChr%” GOTO :EOF
GoTo :StringLenLoop

Еще один способ определения длины строки, как ни странно – достаточно быстрый:

Ну и, наконец, решение, поразившее меня своей математической лаконичностью:

Для себя я так же использую метод половинного деления
для нахождения количества символов в строке.
Эта процедура менее изящна, и, возможно, потребует несколько большего времени
для вычислений, чем приведенная выше, но, на мой взгляд, она понятнее.
(В этом месте надо было похвалить себя еще, но что-то не нашлось достойных эпитетов)

Привожу на всякий случай и эту процедуру ))

Получение подстроки.

Если смещение начала подстроки и ее длина являются константами –
здесь все достаточно просто и аналогичный пример рассматривался выше:

Прошу прощения, если в качестве значения переменной str я опубликовал чей-то пароль )).
Если же одна или обе эти величины – переменные, то решение будет не столь простое.
Здесь встретиться возможно не совсем обычное применение команды CALL.
Немного глубже об этом на странице Полезное
в разделе Особенности использования команды CALL. Там же рассмотрен и этот пример.

Итак, рассмотрим возможные решения:

Или как вариант предыдущего

Удаление ведущих и замыкающих пробелов.

:ALLTRIM
:: ———————–
:: Krasner B.
:: ———————–
:: %1 – var with txt string
:: ———————–
SetLocal EnableDelayedExpansion
set /a firstnoblank=-1
set /a lastnoblank=0
set /a curpos=1
set “str=Q!%1!”
:StringLenLoop
set SUBD=!str:~%curpos%,1!
if “!SUBD!” == “” GoTo :formrez
if NOT “!SUBD!” == ” ” (
if !firstnoblank! == -1 set firstnoblank=!curpos!
set lastnoblank=!curpos!
)
set /a curpos = !curpos!+1
GoTo :StringLenLoop
:formrez
set /a n1=!firstnoblank!-1
set /a n2=!lastnoblank!-!firstnoblank!+1
if !firstnoblank! == -1 (set “rez=”) else (set rez=!%1:~%n1%,%n2%!)
ENDLOCAL & SET %~1=%rez%
exit /b 0
)

Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать
раздел форума
этого сайта (требуется регистрация).

Новый раздел о средствах командной строки в рамках этого же проекта расположен
здесь

4 ответа

Используйте for /F цикл для анализа текста:

Параметр skip=5 указывает for /F игнорировать первые пять строк. Команда goto выходит из цикла после прочтения первой непропущенной строки. Таким образом, переменная LINE, наконец, будет удерживать интересующую линию.

:/>  Add registry key via Active startup

Вместо использования goto вы также можете проверить, была ли уже определена переменная, чтобы выбрать одну определенную строку текста, например:

Содержимое текстового файла выглядит как результат выполнения команды dir (что-то вроде dir “n:ggggggggggggggggggggg.csv”). Вы можете анализировать такой вывод команды напрямую с помощью for /F без необходимости сначала сохранять его в текстовый файл – см. Это:

27 Окт 2016 в 13:08

Это получение строк, которые начинаются с цифры, так как это то, что вам нужно в вашем вопросе.

25 Окт 2016 в 12:01

Вы можете просто использовать команду findstr и записать вывод в новый текстовый файл, outfile.txt. Затем вы можете искать эту точную строку в своем файле. Однако это будет записывать вывод в файл только в том случае, если искомая строка точно соответствует строке.

Для получения дополнительной информации о команде findstr я бы порекомендовал открыть новый cmd и ввести

Надеюсь это поможет

25 Окт 2016 в 11:05

Перетащите вашу папку в этот командный файл.

Он должен вывести файл output.txt в эту папку. (если входная папка не указана, она должна предоставить output.txt в текущий каталог) .

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

Просто перетащите на него свой файл или адаптируйте его, чтобы заменить% ~ 1 на путь / имя вашего файла во второй строке.

25 Окт 2016 в 12:02

Примеры

Чтобы удалить все файлы из папки Test на диске C, введите одну из следующих команд:

del c: est

del c: est*.*

Del (erase)

Удаление заданных файлов.

Параметры

Задание расположения и имени файла для удаления. Параметр имя_файла является
обязательным. Допускается использование нескольких имен файлов. Имена файлов следует
разделять пробелом, запятой или точкой с запятой.

Задание удаления с подтверждением для каждого файла.

Задание удаления файлов с атрибутом «Только чтение».

Удаление заданных файлов в каталоге и всех его подкаталогах. Выводит имена удаляемых файлов.

Задание автоматического режима. Не выводится подтверждение на удаление.

Удаление файлов с заданными атрибутами.

Задание следующих атрибутов файла.

Отображение справки в командной строке.

Задание расположения и имени файла для удаления. Параметр имя_файла является
обязательным. Допускается использование нескольких имен файлов. Имена файлов следует
разделять пробелом, запятой или точкой с запятой.

Удаление заданных файлов в каталоге и всех его подкаталогах. Выводит имена удаляемых файлов.

Оставьте комментарий