В данной статье мы продолжим освоение командной строки и разберем работу с файлами. Далее мы расскажем о том, как запускать программы, открывать, переименовывать, перемещать и копировать файлы в командной строке.

В прошлый раз мы говорили о том, как работать с папками. Взаимодействие с файлами и папками примерно схоже, однако за их некоторые действия отвечают различные команды. К примеру, за удаление папок отвечает команда «rmdir», а за утилизацию файлов – команда «del». Эта статья, как, впрочем, и предыдущая, довольно большая по объему, потому как команды описываются достаточно подробно с приведением примеров. Можно было бы, конечно, разбить статью на несколько отдельных с разбором каждой команды, но формат сайта, наверное, все же не тот. Да и не хочется излишне захламлять сайт тем, что можно уместить в одной статье, пускай и очень большой.

Итак, перейдем к делу.

Как запустить программу и открыть файл в командной строке

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

“C:\Program Files\ColorMania\colormania.exe”

Многие системные программы можно запускать просто вводом их названия в командной строке. Например, за панель управления отвечает приложение «control.exe»: чтобы его вызвать, в командной строке впишите control или control.exe. Многие из таких системных приложений лежат в папке «System32». Если вы хотите вызывать их через командную строку, то пройдите в каталог «C:\Windows\System32», найдите нужную программу и запомните ее название: большинство системных приложений можно запускать без прописывания в конце расширения «exe». Тот же графический редактор Paint лежит в папке «System32» и называется «mspaint.exe». Для того, чтобы запустить его через командную строку, достаточно написать mspaint по аналогии с панелью управления.

У вас, вероятно, мог возникнуть вопрос: а можно ли подобным образом запускать и иные, то есть несистемные программы? Ответ: да, можно. Однако придется кое-где кое-что вписать.

Итак, действия совершенно не сложные. Приведем на примере все той же программы Colormania. Для начала нужно перейти в панель управления: наберите сочетание клавиш Win + R для вызова системной утилиты «Выполнить». В ее единственном поле введите control.

В открывшейся панели управления отобразите все ее элементы (в опции «Категория» выберите «Мелкие значки») и перейдите к разделу «Система».

Нажмите на пункт «Дополнительные параметры системы».

Откройте вкладку «Дополнительно» и здесь нажмите на кнопку «Переменные среды».

В первом разделе в списке найдите переменную «Path», выберите ее и нажмите на кнопку «Изменить…», находящуюся под списком.

Перейдите в самый конец строки «Значение переменной», поставьте точку с запятой, чтобы отделить ваш путь от другого, и впишите без кавычек путь к директории, в которой у вас лежат исполняемые файлы с расширением «exe» (заметьте, что они не всегда лежат в корневом каталоге программы). В нашем примере исполняемый файл программы Colormania («colormania.exe») лежит в папке «C:\Program Files\Colormania».

Сохраните результат, нажав во всех открытых вами окнах кнопку «OK». Затем перезапустите командную строку, если она у вас уже была запущена. Теперь вы можете запустить программу, просто написав название ее исполняемого файла. В случае с Colormania можно написать colormania или colormania.exe.

Как удалить файл в командной строке

За удаление файлов отвечает команда «del» или ее синоним – команда «erase». Синтаксис обеих команд таков (для удобства будем работать с «del»): del *параметры* *путь к файлу*.

Пусть в папке «C:\Test» лежат текстовые файлы «file_1» и «file_2». Удалим первый текстовый файл: del “C:\Test\file_1.txt”.

Если вы хотите удалить несколько конкретных файлов, то последовательно через пробел напишите пути к ним. Например, таким образом: del “C:\Test\file_1.txt” “C:\Test\file_3.txt” (и так – произвольное количество файлов). К слову, при удалении может появится запрос на подтверждение действия. Если вы не хотите, чтобы он появлялся, задайте параметр «/q».

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

Как это выглядит на деле? Предположим, нам нужно выбрать все файлы с расширением «txt», а их имена нас совершенно не интересуют. Тогда мы напишем del “C:\Test\*.txt”. Да, этот символ записывается в пути.

Или другой пример: нам нужно выбрать текстовые файлы, имеющие в произвольном месте названия слово «file». Для этого следует написать del “C:\Test\*file*.txt”. Здесь «звездочки», обособившие слово «file», указывают на то, что до и после него могут содержаться любые символы или вообще отсутствовать как таковые. Если в папке «Test» лежат файлы «new_file_1.txt», «file_1.txt», «big_file.txt», «file.txt», то все они будут утилизированы. Если вы хотите удалить файлы невзирая на их расширение, то нужно написать del “C:\Test\*.*”.

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

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

Итак, параметр «/a» позволяет удалять файлы только с определенными атрибутами. Его синтаксис таков: /a:*буквы атрибутов*. Всего доступны следующие 6 атрибутов:

  • «R» – файлы для чтения;
  • «S» – системные файлы;
  • «H» – скрытые файлы;
  • «A» – файлы, готовые для архивирования;
  • «I» – файлы с неиндексированным содержимым;
  • «L» – точки повторной обработки.

Атрибуты можно комбинировать. Так можно задать удаление файлов для чтения и скрытых файлов: del /a:rh “C:\Test”.

По умолчанию файлы с атрибутом «Только для чтения» требуют запрос на удаление. Если вы хотите принудительно удалять файлы с этим атрибутом, то задайте параметр «/f».

Допустим, во все той же папке «C:\Test» лежит большое количество файлов, и нам нужно удалить те текстовые файлы, которые имеют атрибут «Только чтение». Тогда следует написать del /a:r *.txt, где *.txt указывает на файлы расширения «txt» с любым названием.

Также атрибутам можно задавать префикс «-», который означает отсутствие атрибута: «-r» – не файл для чтения, «-s» – несистемный файл и так далее.

Как переименовать файл в командной строке

При помощи команды «ren» (или «rename») можно переименовывать файлы. Синтаксис команды очень прост: ren *путь* *новое имя файла*. У «ren» нет параметров. Обратите особое внимание на то, что при переименовании файла нужно указывать также и желаемое расширение.

Пусть в исходной папке «C:\Test» лежит текстовый файл с названием «text_file». Переименуем его в «new_text_file»: ren C:\Test\text_file.txt new_text_file.

Как скопировать файл в командной строке

Копировать файлы в командной строке можно посредством нескольких команд: «copy», «xcopy», а также при помощи команды «robocopy», которая будет подробно описана в другой статье. Начнем по порядку.

Команда «copy»

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

copy *параметры* *путь до файла* *место копирования*

Если копируемые файлы могут заменить файлы в конечной папке и если вы не хотите получать запрос на их перезапись, то задайте параметр «/y». А если вам, наоборот, нужно получать запрос на замену каждого файла, то укажите параметр с обратным действием – «/-y».

Приведем пример: требуется скопировать все файлы из папки «C:\Test» в папку «C:\Test\Example folder» без запроса на перезапись. Тогда напишем:

copy /y “C:\Test\*” “C:\Test\Example folder”

Здесь * означает все файлы для копирования.

Команда «xcopy»

При помощи команды «xcopy» можно копировать не только файлы, но и папки с файлами (или без), и она, к тому же, гораздо более богатая на параметры, чем «copy». Синтаксис данной команды таков:

xcopy *файл/папка* *место копирования* *параметры*.

Приведем список наиболее важных, на мой взгляд, параметров команды «xcopy» и опишем примеры их использования (некоторые параметры не снабжены примерами ввиду очевидности их работы).

Параметр Описание параметра
/d

Позволяет копировать файлы, которые были изменены или созданы не ранее (то есть после) указанной даты. Синтаксис: /d:месяц-число-год (американский формат даты).

Предположим, требуется скопировать все файлы и папки из каталога «Program Files», которые были изменены после 2 августа 2016 года, в папку «C:\New Files». Для этого напишем:

xcopy “C:\Program Files” “C:\New soft” /d:08-02-2016

/exclude

Исключает из процедуры копирования файлы и папки, описанные в текстовых файлах, путь к которым указывается в самом параметре. Каждый исключаемый файл (набор файлов) или папка записывается с новой строки. Синтаксис:

/exclude:”файл1”+”файл2”+…+”файл N”

В качестве примера из папки «C:\Movies» в папку «C:\Media\Movies» скопируем все файлы, за исключением тех, которые имеют расширение «mp4» или имеют в названии артикль «the». Для начала где-нибудь создадим текстовый файл, в котором напишем:

C:\Movies\*.mp4
C:\Movies\*the*.*

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

xcopy C:\Movies C:\Media\Movies /exclude:”C:\Movies\list.txt”

/s

Копирует только непустые каталоги и лежащие в них подкаталоги.

Пусть в папке «C:\Test1» содержатся непустой каталог «Subtest1» и пустой каталог «Subtest2». Скопируем содержимое каталога «Test1» в папку «Test2», располагающуюся в корне того же диска «C»:

xcopy “C:\Test1” “C:\Test2” /s

Очевидно, что в каталоге «Test2» окажется папка «Subtest1» с ее содержимым.

/e

Копирует как пустые, так и непустые каталоги и лежащие в них подкаталоги.

Возьмем случай, описанный для параметра «/s». Напишем следующий код:

xcopy “C:\Test1” “C:\Test2” /e

В каталоге «Test2» окажутся и папка «Subtest1» с ее содержимым, и пустая папка «Subtest2».

/c Позволяет продолжить процедуру копирования, если даже в ее ходе возникнут ошибки.
/q В ходе копирования в командной строке не будут появляться имена скопированных файлов.
/f

Выводит начальные (до копирования) и конечные (после копирования) имена файлов и пути к ним.

В корне диска «C» из папки «Test1» скопируем лежащие в ней файлы в папку «Test2»: xcopy “C:\Test1” “C:\Test2” /f.

/h Позволяет копировать системные и скрытые файлы (что изначально недоступно).
/r Позволяет производить замену файлов с атрибутом «Только чтение». Изначально файлы с таким атрибутом нельзя заменить.
/t Создает структуру непустых каталогов указанной директории в другом каталоге. Проще говоря, переносятся только папки без файлов с условием, что изначально они не пусты. Если вы хотите, чтобы в создаваемой вами структуре были и пустые папки тоже, то задайте помимо параметра «/t» параметр «/e».
/k Сохраняет атрибуты копируемых файлов. Изначально атрибуты копируемых файлов сбрасываются.
/y Отключает запрос на перезапись файлов, лежащих в конечных каталогах. Если вам, наоборот, нужно получать запросы, то укажите параметр «/-y».

Как переместить файл в командной строке

Для перемещения файлов используется команда «move». Синтаксис команды:

move *параметры* *путь к файлу и его имя* *место перемещения*

Всего доступны два параметра: «/y» и «/-y». Они отвечают за отправку запроса на подтверждение перезаписи при перемещении файлов. При активации параметра «/y» подтверждение перезаписи файлов не требуется – перемещаемые файлы автоматически заменяют файлы в папке назначения. При активации параметра «/-y» отправляется запрос на подтверждение замены каждого отдельного файла.

Скопируем все текстовые файлы из папки «C:\Test1» в папку «C:\Test2» без запроса на перезапись: move /y C:\Test1\*.txt C:\Test2.

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

Как перемещать скрытые файлы в командной строке

У команды «robocopy» существуют два замечательных параметра, которые позволяют копировать и перемещать скрытые файлы. Синтаксис у команды таков:

robocopy *из какой папки копировать* *куда копировать* *файлы* *параметры*

Итак, параметр «/mov» позволяет перемещать только файлы из указанного каталога (без перемещения папок этого каталога и вложенного в них содержимого). Положим, из папки «C:\Test1» мы хотим переместить все файлы в папку «C:\Test2». Для этого нужно написать robocopy C:\Test1 C:\Test2 /mov.

В итоге были перемещены 3 текстовых файла, в том числе и скрытый файл с названием «file3.txt».

Параметр «/move» позволяет перемещать и файлы, и папки. Однако для того, чтобы папки с их содержимым могли быть перенесены, нужно также добавить параметр «/e», который, собственно, и позволяет перемещать (и копировать в целом) пустые и непустые каталоги. Для переноса всего содержимого из все той же папки «Test1» в папку «Test2» следует написать примерно следующую инструкцию:

robocopy C:\Test1 C:\Test2 /move /e

Помните, что пути нужно заключать в кавычки, если в них содержатся пробелы (в нашем случае их нет). Заметьте также, что после перемещения сама исходная папка удаляется.