Как через cmd удалить файл

Самый простой подход (если ваш текстовый файл называется data.txt):

more +1 "data.txt" > "data_NEW.txt"

Это ограничивает строки длиной около 65535 байт / символов, а размер файла – около 65535 строк. Кроме того, вкладки расширяются до пробелов (по умолчанию 8).


Вы могли бы использовать for /F цикл вместо этого (здесь нужен нечетный синтаксис строки опции без кавычек, чтобы отключить eol персонаж ; не игнорировать строки, начинающиеся с таких):

@echo off
(
    for /F usebackq^ skip^=1^ delims^=^ eol^= %%L in ("data.txt") do echo(%%L
) > "data_NEW.txt"

Это ограничивает строки длиной около 8190 символов / байт и теряет пустые строки.


Вы могли бы использовать for /F петля вместе с findstr держать пустые строки (findstr добавляет номер строки плюс : к каждой строке, так for /F не видит пустых строк; все до (первого) двоеточия затем удаляется в теле цикла; переключение отложенного расширения гарантирует, чтобы не потерять !):

@echo off
(
    for /F "skip=1 delims=" %%L in ('findstr /N "^" "data.txt"') do (
        set "LINE=%%L"
        setlocal EnableDelayedExpansion
        echo(!LINE:*:=!
        endlocal
    )
) > "data_NEW.txt"

Это по-прежнему ограничивает строки длиной около 8190 символов / байт.


Или вы можете использовать перенаправление ввода < вместе с set /P (для этого необходимо заранее определить общее количество строк):

@echo off
for /F %%C in ('find /C /V "" ^< "data.txt"') do set "COUNT=%%C"
setlocal EnableDelayedExpansion
(
    for /L %%I in (1,1,%COUNT%) do (
        set "LINE=" & set /P LINE=""
        if %%I gtr 1 echo(!LINE!
    )
) < "data.txt" > "data_NEW.txt"
endlocal

Это ограничивает строки длиной около 1022 символов / байтов.


Чтобы заменить исходный файл на измененный, просто сделайте это:

move /Y "data_NEW.txt" "data.txt" > nul

Самый простой подход (если ваш текстовый файл называется data.txt):

more +1 "data.txt" > "data_NEW.txt"

Это ограничивает длину строк примерно 65535 байтами / символами, а файл – примерно 65535 строками. Кроме того, TABs расширяется до SPACEs (по умолчанию 8).


Вместо этого вы можете использовать цикл for /F (здесь необходим странный синтаксис строки без кавычек, чтобы отключить символ eol по умолчанию ;, чтобы не игнорировать строки, начинающиеся с таких):

@echo off
(
    for /F usebackq^ skip^=1^ delims^=^ eol^= %%L in ("data.txt") do echo(%%L
) > "data_NEW.txt"

Это ограничивает длину строк примерно 8190 символами / байтами и теряет пустые строки.


Вы можете использовать цикл for /F вместе с findstr для сохранения пустых строк (findstr добавляет номер строки плюс : к каждой строке, поэтому for /F не видит пустых строк; все до (первого) двоеточия затем удаляется в теле цикла; переключение отложенное расширение гарантирует, что вы не потеряете !):

@echo off
(
    for /F "skip=1 delims = " %%L in ('findstr /N "^" "data.txt"') do (
        set "LINE=%%L"
        setlocal EnableDelayedExpansion
        echo(!LINE:*:=!
        endlocal
    )
) > "data_NEW.txt"

Это по-прежнему ограничивает длину строк примерно 8190 символами / байтами.


Или вы можете использовать перенаправление ввода < вместе с set /P (для этого необходимо заранее определить общее количество строк):

@echo off
for /F %%C in ('find /C /V "" ^< "data.txt"') do set "COUNT=%%C"
setlocal EnableDelayedExpansion
(
    for /L %%I in (1,1,%COUNT%) do (
        set "LINE = " & set /P LINE = ""
        if %%I gtr 1 echo(!LINE!
    )
) < "data.txt" > "data_NEW.txt"
endlocal

Это ограничивает длину строк примерно 1022 символами / байтами.


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

move /Y "data_NEW.txt" "data.txt" > nul

Для удаления файлов старше n дней, можно пользоваться скриптами CMD, VBS и PowerShell.

PowerShell

#Удаляет файлы согласно фильтру и даты создания
get-childitem "d:\t1\" -filter *.mxl -recurse | Where{$_.LastWriteTime -le (Get-Date).AddDays(-1)} | Remove-Item -Recurse -Force
$TargetDelNt = "D:\1" #путь до папки шары
$Del = "-3" #Количество хранимых дней
 
$CurrentDay = Get-Date
 
$ChDaysDel = $CurrentDay.AddDays($Del)
 
#Удаление файлов, дата создания которых больше 3 дней
GCI -Path $Taер rgetDelNt -Recurse | Where-Object {$_.CreationTime -LT $ChDaysDel} | RI -Recurse -Force 
 
#Удаление пустых папок
GCI -Path $TargetDelNt -Recurse | Where-Object {
$_.PSIsContainer -and 
@(Get-ChildItem -Path $_.Fullname -Recurse | Where { -not $_.PSIsContainer }).Count -eq 0 } | RI -Recurse


Пишите нам!
Архитектурная мастерская.
Продвижение сайтов от optimism.ru

Page generation time: 0.1009s (PHP: 60% – SQL: 40%) – SQL queries: 40 – GZIP disabled – Debug off

В этой статье рассказывается, как удалить файл с рабочего стола компьютера под управлением Windows с помощью командной строки.

  1. Изображение с названием Delete a File Using Command Prompt Step 1

    Выберите файл. Если вы знаете, где находится файл, перейдите к нему, открыв соответствующую папку. Например, если нужно удалить изображение или текстовый файл, скорее всего, он находится в папке «Документы», в которой по умолчанию хранятся файлы такого формата.

    • Если вы не знаете, где находится файл, введите его имя в строке поиска меню «Пуск», затем щелкните по нему правой кнопкой мыши и в меню выберите «Расположение файла», чтобы перейти непосредственно к файлу.
  2. Изображение с названием Delete a File Using Command Prompt Step 2

    Перетащите файл на рабочий стол. Так вы упростите процесс удаления, потому что отпадет необходимость переходить в соответствующий каталог в командной строке.

    • Исключением из этого правила является случай удаления файла из папки «System32», которая является системной папкой Windows. В этом случае оставьте файл в этой папке.
  3. Изображение с названием Delete a File Using Command Prompt Step 3

    Щелкните по файлу правой кнопкой мыши. Откроется выпадающее меню.

  4. Изображение с названием Delete a File Using Command Prompt Step 4

    Нажмите . Эта опция находится в нижней части открывшегося меню.

  5. Изображение с названием Delete a File Using Command Prompt Step 5

    Выясните расширение файла. Расширение файла отображается на вкладке «Общие» окна «Свойства» в строке «Тип файла». Необходимо знать расширение файла, чтобы удалить его с помощью командной строки. Наиболее распространенными расширениями являются:

    • .txt – текстовые файлы (созданы в Блокноте).
    • .docx – файлы Microsoft Word.
    • .jpg or .png – изображения.
    • .mov, .wmv, .mp4 – видеофайлы.
    • .mp3, .wav – аудиофайлы.
    • .exe – исполняемые файлы (например, установочные файлы).
    • .lnk – ярлыки. Удаление ярлыка не приведет к удалению соответствующего файла (программы).
  6. Изображение с названием Delete a File Using Command Prompt Step 6

    Запишите расширение файла. Теперь можно открыть и воспользоваться командной строкой.

  1. Изображение с названием Delete a File Using Command Prompt Step 7

    Откройте командную строку. Открыть командную строку нужно без административных прав, если только вы не собираетесь удалять файл из системной папки «System32». Открыть командную строку можно по-разному в зависимости от версии Windows:

    • Зажмите клавишу , нажмите , а затем над кнопкой «Пуск» нажмите «Командная строка».
    • Щелкните правой кнопкой мыши по кнопке «Пуск» (в левом нижнем углу экрана) и в меню выберите «Командная строка».
    • В строке поиска меню «Пуск» введите «Командная строка» (без кавычек; в Windows 8 переместите курсор мыши в правый верхний угол экрана и щелкните по значку в виде лупы) и нажмите «Командная строка», когда появится соответствующий значок.
    • В меню «Пуск» нажмите «Выполнить», введите «cmd» (без кавычек) и нажмите «OK».
  2. Изображение с названием Delete a File Using Command Prompt Step 8

    Введите cd desktop и нажмите . Так в командой строке вы перейдете в каталог, соответствующий рабочему столу.

    • Если нужно, воспользуйтесь другими методами, чтобы изменить каталог в командной строке.
    • Если открыть командную строку в качестве администратора, вы автоматически переместитесь в каталог (папку) «System32». Поэтому не открывайте командную строку с административными правами, только если удаляемый файл не находится в папке «System32».
  3. Изображение с названием Delete a File Using Command Prompt Step 9

    • Например, если нужно удалить изображение под названием «icecream», введите icecream.png, а если текстовый файл под названием «notes», введите notes.txt (и так далее).
    • Если в имени файла есть пробелы, имя и расширение файла нужно заключить в кавычки: "I like turtles.jpg" вместо I_like_turtles.jpg.
    • Чтобы удалить с рабочего стола все файлы с одинаковым расширением (например, все текстовые файлы), введите *.расширение, где вместо «расширение» подставьте соответствующее расширение (например, *.txt).
  4. Изображение с названием Delete a File Using Command Prompt Step 10

    Нажмите . В командной строке появится новая пустая строка.

    • Команда «del» удаляет файлы непосредственно с жесткого диска, то есть не нужно повторно удалять их из Корзины.

CMD/BAT – Удаление файлов по списку

Командная строка – мощный инструмент для автоматизации и упрощения многих задач, которые возникают при администрировании компьютера с операционной системой Windows. В этой статье мы рассмотрим команды DEL, ERASE, RD и RMDIR. С их помощью вы сможете удалять файлы и папки прямо из командной строки.

Удаление файлов через командную строку

Если вам нужно удалить файл через командную строку, то для этого нужно использовать команду или . Эти команды являются синонимами и работают одинаково. Вы можете получить подробную информацию об этих командах, если введете их в командную строку с параметром «». Например, вы можете ввести «» и в консоль выведется вся основная информация о команде .

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

  • – удаление с запросом подтверждения для каждого файла;
  • – удаление файлов с атрибутом «только для чтения»;
  • – удаление указанного файла из всех вложенных папок;
  • – удаление без запроса на подтверждение ;
  • – удаление файлов согласно их атрибутам;

    • — Системные;
    • — Скрытые;
    • – Только для чтения;
    • — Для архивирования
    • Также перед атрибутами можно использовать знак минус «-», который имеет значение «НЕ». Например, «-S» означает не системный файл.

Обычно, для того чтобы воспользоваться командной нужно сначала перейти в папку, в которой находится файл для удаления, и после этого выполнить команду. Для того чтобы сменить диск нужно просто ввести букву диска и двоеточие. А для перемещения по папкам нужно использовать команду «».

перемещение по папкам

После того как вы попали в нужную папку можно приступать к удалению файлов. Для этого просто введите команду и название файла.

del test.txt

удаление файла

Также, при необходимости вы можете удалять файлы, не перемещаясь по папкам. В этом случае нужно указывать полный путь к документу.

del e:\tmp\test.txt

удаление файла по полному адресу

Если есть необходимость выполнить запрос на подтверждение удаления каждого из файлов, то к команде нужно добавить параметр «». В этом случае в командной строке будет появляться запрос на удаление файла и пользователю нужно будет ввести букву «Y» для подтверждения.

del /p test.txt

запрос на подтверждение удаления

Нужно отметить, что при использовании параметра «», отвечающие за атрибуты буквы нужно вводить через двоеточие. Например, для того чтобы удалить все файлы с атрибутом «только для чтения» и с расширением «» нужно ввести:

del /F /A:R *.txt

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

Аналогичным образом к команде DEL можно добавлять и другие параметры. Комбинируя их вы сможете создавать очень мощные команды для удаления файлов через командную строку Windows. Ниже мы приводим еще несколько примеров.

Уничтожение всех файлов в корне диска D:

del D:\

Уничтожение всех файлов с расширением «» в корне диска :

del D:\*.txt

Уничтожение всех файлов в папке (документы с атрибутами будут пропущены):

del D:\doc

Уничтожение всех файлов с атрибутом «только для чтения» и расширением «» в папке :

del /A:r d:\doc\*.txt

Удаление папок через командную строку

Если вам нужно удалить папку через командную строку Windows, то указанные выше команды вам не помогут. Для удаления папок существует отдельная команда или (сокращение от английского Remove Directory).

Команды и являются синонимами и предназначены для удаления папок. Они могу принимать следующие параметры:

  • — удаление всего дерева каталогов, при использовании данного параметра будет удалена не только сама папка, но и все ее содержимое;
  • – удаление дерева папок без запроса на подтверждение;

Например, для того чтобы удалить папку достаточно ввести команду RD и название папки. Например:

rd MyFolder

удаление папки

Если папка содержит вложенные папки или файлы, то при ее удалении будет выведена ошибка «Папка не пуста».

ошибка при удаление папки

Для решения этой проблемы к команде нужно добавить параметр «». В этом случае удаление проходит без проблем, но появляется запрос на подтверждение удаления. Например:

rd /s MyFolder

удаление папки с подтверждением

Для того чтобы удаление дерева папок прошло без появления запроса на подтверждение к команде нужно добавить параметр «». В этом случае папка удаляется без лишних вопросов. Например:

rd /s /q MyFolder

удаление папки без подтверждения

Также команда может принимать сразу несколько папок, для этого их нужно просто разделить пробелом. Например, чтобы сразу удалить

rd Folder1 Folder2

удаление нескольких папок

Если же вам нужно удалить через командную строку папку, которая сама содержит пробел, то в этом случае ее название нужно взять в двойные кавычки. Например:

rd "My Files"

удаление папок с пробелом

Комбинируя команды и , можно создавать мощные скрипты для очистки и удаления папок в операционной системе Windows.

Удаление файлов и папок в PowerShell

В консоли PowerShell вы можете использовать рассмотренные выше команды и , либо «» — собственную команду (командлет) PowerShell. С помощью данной команды можно удалять можно удалять файлы, папки, ключи реестра, переменные и другие объекты.

Например, для того чтобы удалить файл или папку в консоли PowerShell можно использовать команду:

Remove-item file.txt

Remove-item MyFolder

Удаление файлов в PowerShell

Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.

Задайте вопрос в комментариях под статьей или на странице
«Задать вопрос»
и вы обязательно получите ответ.


The simple single command line solution which of course can be also used in a batch file:

pushd "%PathToFolder%" 2>nul && ( rd /Q /S "%PathToFolder%" 2>nul & popd )

This command line contains three commands executed one after the other.

The first command PUSHD pushes current directory path on stack and next makes %PathToFolder% the current directory for running command process.

This works also for UNC paths by default because of command extensions are enabled by default and in this case PUSHD creates a temporary drive letter that points to that specified network resource and then changes the current drive and directory, using the newly defined drive letter.

The system cannot find the path specified.

This error message is suppressed by redirecting it with 2>nul to device NUL.

The next command RD is executed only if changing current directory for current command process to specified directory was successful, i.e. the specified directory exists at all.

The command RD with the options /Q and /S removes a directory quietly with all subdirectories even if the specified directory contains files or folders with hidden attribute or with read-only attribute set. The system attribute does never prevent deletion of a file or folder.

Not deleted are:

  1. Folders used as the current directory for any running process. The entire folder tree to such a folder cannot be deleted if a folder is used as the current directory for any running process.

  2. Files currently opened by any running process with file access permissions set on file open to prevent deletion of the file while opened by the running application/process. Such an opened file prevents also the deletion of entire folder tree to the opened file.

The first reason for not deleting a folder is used by this command line to delete all files and subfolders of the specified folder, but not the folder itself. The folder is made temporarily the current directory for running command process which prevents the deletion of the folder itself. Of course this results in output of an error message by command RD:

The process cannot access the file because it is being used by another process.

File is the wrong term here as in reality the folder is being used by another process, the current command process which executed command RD. Well, in reality a folder is for the file system a special file with file attribute directory which explains this error message. But I don’t want to go too deep into file system management.

This error message, like all other error messages, which could occur because of the three reasons written above, is suppressed by redirecting it with 2>nul from handle STDERR to device NUL.

The third command, POPD, is executed independently of the exit value of command RD.

POPD pops the directory path pushed by PUSHD from the stack and changes the current directory for running the command process to this directory, i.e. restores the initial current directory. POPD deletes the temporary drive letter created by PUSHD in case of a UNC folder path.

Note: POPD can silently fail to restore the initial current directory in case of the initial current directory was a subdirectory of the directory to clean which does not exist anymore. In this special case %PathToFolder% remains the current directory. So it is advisable to run the command line above not from a subdirectory of %PathToFolder%.

  • pushd /?
  • popd /?
  • rd /?

Single line with multiple commands using Windows batch file explains the operators && and & used here.


Next let us look on the batch file solution using the command DEL to delete files in %PathToFolder% and FOR and RD to delete the subfolders in %PathToFolder%.

@echo off
setlocal EnableExtensions DisableDelayedExpansion

rem Clean the folder for temporary files if environment variable
rem PathToFolder is not defined already outside this batch file.
if not defined PathToFolder set "PathToFolder=%TEMP%"

rem Remove all double quotes from folder path.
set "PathToFolder=%PathToFolder:"=%"

rem Did the folder path consist only of double quotes?
if not defined PathToFolder goto EndCleanFolder

rem Remove a backslash at end of folder path.
if "%PathToFolder:~-1%" == "\" set "PathToFolder=%PathToFolder:~0,-1%"

rem Did the folder path consist only of a backslash (with one or more double quotes)?
if not defined PathToFolder goto EndCleanFolder

rem Delete all files in specified folder including files with hidden
rem or read-only attribute set, except the files currently opened by
rem a running process which prevents deletion of the file while being
rem opened by the application, or on which the current user has not
rem the required permissions to delete the file.
del /A /F /Q "%PathToFolder%\*" >nul 2>nul

rem Delete all subfolders in specified folder including those with hidden
rem attribute set recursive with all files and subfolders, except folders
rem being the current directory of any running process which prevents the
rem deletion of the folder and all folders above, folders containing a file
rem opened by the application which prevents deletion of the file and the
rem entire folder structure to this file, or on which the current user has
rem not the required permissions to delete a folder or file in folder tree
rem to delete.
for /F "eol=| delims=" %%I in ('dir "%PathToFolder%\*" /AD /B 2^>nul') do rd /Q /S "%PathToFolder%\%%I" 2>nul

:EndCleanFolder
endlocal

The batch file first makes sure that environment variable PathToFolder is really defined with a folder path without double quotes and without a backslash at the end. The backslash at the end would not be a problem, but double quotes in a folder path could be problematic because of the value of PathToFolder is concatenated with other strings during batch file execution.

Important are the two lines:

del /A /F /Q "%PathToFolder%\*" >nul 2>nul
for /F "eol=| delims=" %%I in ('dir "%PathToFolder%\*" /AD /B 2^>nul') do rd /Q /S "%PathToFolder%\%%I" 2>nul

The command DEL is used to delete all files in the specified directory.

  • The option /A is necessary to process really all files including files with the hidden attribute which DEL would ignore without using option /A.
  • The option /F is necessary to force deletion of files with the read-only attribute set.
  • The option /Q is necessary to run a quiet deletion of multiple files without prompting the user if multiple files should be really deleted.
  • >nul is necessary to redirect the output of the file names written to handle STDOUT to device NUL of which can’t be deleted because of a file is currently opened or user has no permission to delete the file.
  • 2>nul is necessary to redirect the error message output for each file which can’t be deleted from handle STDERR to device NUL.
dir "%PathToFolder%\*" /AD /B 2>nul

DIR outputs in bare format because of /B the directory entries with attribute D, i.e. the names of all subdirectories in specified directory independent on other attributes like the hidden attribute without a path. 2>nul is used to redirect the error message output by DIR on no directory found from handle STDERR to device NUL.

The redirection operator > must be escaped with the caret character, ^, on the FOR command line to be interpreted as a literal character when the Windows command interpreter processes this command line before executing the command FOR which executes the embedded dir command line in a separate command process started in the background.

FOR processes the captured output written to handle STDOUT of a started command process which are the names of the subdirectories without path and never enclosed in double quotes.

FOR with option /F ignores empty lines which don’t occur here as DIR with option /B does not output empty lines.

FOR would split up the line into substrings using space and horizontal tab as delimiters and would assign only the first space/tab delimited string to specified loop variable I. This splitting behavior is not wanted here because of a directory name can contain one or more spaces. Therefore delims= is used to define an empty list of delimiters to disable the line splitting behavior and get assigned to the loop variable, I, always the complete directory name.

Command FOR runs the command RD for each directory name without a path which is the reason why on the RD command line the folder path must be specified once again which is concatenated with the subfolder name.

  • del /?
  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • if /?
  • rd /?
  • rem /?
  • set /?
  • setlocal /?

Советы

  • Чтобы удалить файлы, лучше воспользоваться файловым менеджером. С помощью командной строки удаляйте файлы, от которых сложно избавиться.

Об этой статье

Предупреждения

  • Удаление системного файла может привести к краху системы.
  • Файлы, которые удаляются через командную строку, в Корзину не попадают.
:/>  Утилиты Traceroute и Tracert | REG.RU

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