Ошибка команда не использует параметр с именем файла

Обновлено: 02.07.2024

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

Синтаксис

dir [диск:][путь][имя_файла] [. ] [ /p] [/q] [/w] [/d] [/a[[ :]атрибуты]] [/o[[:]порядок_сортировки]] [/t[[ :]поле_сортировки]] [/s] [/b] [/l] [ /n] [/x] [/c] [/4]

Параметры

[диск:][путь] Задание диска и каталога, список файлов которого будет выведен. [имя_файла] Задание файла или группы файлов, сведения о которых требуется вывести. /p Постраничный вывод сведений, т. е. с паузой после заполнения экрана. Для продолжения просмотра необходимо нажать любую клавишу. /q Вывод сведений о владельце файла. /w Вывод сведений в несколько колонок до пяти имен файлов или каталогов в каждой строке. /d Соответствует /w, но с сортировкой по столбцам. /a [[:] атрибуты] Выводит имена только тех файлов и каталогов, которые имеют указанные атрибуты. Если параметр /a не указан, команда dir выводит имена всех файлов, за исключением системных и скрытых. Если параметр /a указан без атрибутов, команда dir выводит имена всех файлов, включая скрытые и системные. Ниже приведен список значений, которые могут быть использованы при задании параметра атрибуты. Двоеточие (:) является необязательным. Значения из таблицы могут использоваться в любых комбинациях без пробела между ними.
Значение Описание
h Скрытые файлы
s Системные файлы
d Каталоги
a Файлы, готовые к архивированию
r Файлы, доступные только для чтения
-h Файлы, не являющиеся скрытыми
-s Файлы, не являющиеся системными
-d Только файлы (не каталоги)
-a Файлы, не изменявшиеся после последнего архивирования
-r Файлы, не имеющие атрибута «Только чтение»
/o [[:]порядок_сортировки] Управление порядком сортировки и вывода имен файлов и каталогов командой dir. Если параметр /o, не задан, команда dir выводит имена в том порядке, в котором они записаны в каталоге. Если параметр /o использован без параметра порядок_сортировки, команда dir выводит имена каталогов в алфавитном порядке, затем имена файлов в алфавитном порядке. Двоеточие (:) является необязательным. Ниже приведен список значений, которые могут быть использованы при задании параметра порядок_сортировки. Допускается использование любого их сочетания без пробелов между ними.
Значение Описание
n Сортировка по именам в алфавитном порядке
e Сортировка по расширениям в алфавитном порядке
d Сортировка по дате и времени от ранних к поздним
s Сортировка по размеру от меньших к большим
g Сортировка с группированием каталогов перед файлами
-n Сортировка по именам в обратном алфавитном порядке (от Z к A)
-e Сортировка по расширению в обратном алфавитном порядке (от .ZZZ к .AAA)
-d Сортировка по дате и времени от поздних к ранним
-s Сортировка по размеру от больших к меньшим
-g Сортировка с группировкой каталогов после файлов
/t [[:]поле_времени] Задание поля времени для вывода и сортировки. Ниже приведен список значений, которые могут быть использованы при задании параметра поле_времени.
Значение Описание
c Создание
a Последнее обращение
w Последняя запись
/s Перечисление всех случаев обнаружения определенного имени файла в указанном каталоге и всех его подкаталогах. /b Перечисление каждого имени файла (включая расширение) или каталога на отдельной строке. При использовании параметра /b заголовочные сведения или сводка не выводятся. Параметр /b отменяет параметр /w. /l Вывод несортированного списка имен каталогов и имен файлов строчными буквами. Параметр /l не позволяет преобразовывать дополнительные символы в строчные. /n Вывод списка в расширенном формате с именами файлов в правой части экрана. /x Вывод сокращенных имен файлов файловых систем NTFS и FAT. Формат совпадает с форматом параметра /n, но сокращенные имена выводятся после полных. /c Вывод разделителя десятичных разрядов в размере файлов. /4 Отображение года в четырехзначном формате. /? Отображение справки в командной строке.

Примечания

Допускается использование нескольких имен_файлов. Разделяйте имена файлов пробелом, запятой или точкой с запятой. Для вывода группы файлов допускается применение подстановочных знаков (? и *) в параметре имя_файла.

Для вывода списка подгруппы файлов и подкаталогов можно использовать подстановочные знаки (? и *).

Если параметр /a используется более чем с одним значением параметра атрибуты, команда dir выведет имена только тех файлов, все атрибуты которых совпадают с заданными. Например, при использовании параметра /a со значениями атрибутов r и -h в формате /a:r-h или /ar-h команда dir выведет имена файлов, являющихся одновременно скрытыми и защищенными от записи.

Если указано несколько значений порядка_сортировки, команда dir сортирует имена файлов сначала по первому условию, затем по второму и т. д. Например, если указан ключ /o со значениями e и -s порядка_сортировки в формате /o:e-s или /oe-s, команда dir отсортирует имена каталогов и файлов по расширениям, затем от больших файлов к меньшим и выведет окончательный результат. В результате сортировки по алфавиту файлы без расширений будут идти вначале, затем имена каталогов, а потом имена файлов с расширениями.

Параметры команды dir могут быть предварительно заданы включением команды set для переменной среды DIRCMD в файл Autoexec.nt. В команде set dircmd может быть использована любая допустимая комбинация параметров команды dir, включая расположение и имя файла.

Например, чтобы использовать переменную среды DIRCMD для задания вывода в расширенном формате (/w) по умолчанию, в файле Autoexec.nt необходимо ввести следующую строку:

При однократном использовании команды dir можно отменить параметр с помощью переменной среды DIRCMD. Для этого введите параметр, который требуется отменить, в командной строке dir, указав перед ним знак минус. Например:

Чтобы изменить параметры DIRCMD, используемые по умолчанию, введите следующую команду:

set=новый_параметр

Новые параметры по умолчанию останутся в силе для всех последующих команд dir, пока команда set dircmd не задаст новые параметры или не будет перезагружен компьютер.

Чтобы удалить все параметры по умолчанию, введите следующую команду:

Чтобы просмотреть текущие параметры переменной среды DIRCMD, введите следующую команду:

Команда set выведет список переменных среды и их параметров. Дополнительные сведения о этой команде смотрите здесь.

Примеры

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

Команда dir выводит имя корневого каталога, имена его подкаталогов и имена файлов (включая расширения) в этом каталоге. Затем выводятся имена подкаталогов и имена файлов в каждом каталоге дерева каталогов.

Для изменения предыдущего примера так, чтобы команда dir не выводила имена каталогов, введите следующую команду:

Чтобы напечатать список каталогов, введите следующую команду:

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

Вывод команды dir также может быть направлен в файл при замене prn на имя файла. Кроме того, можно также ввести путь. Например, для направления вывода команды dir в файл Dir.doc в каталоге Records введите следующую команду:

Ошибка создания файла

Чтобы вывести список всех файлов с расширением .txt во всех каталогах диска C, введите следующую команду:

Команда dir выводит на экран алфавитный список файлов, удовлетворяющих заданному шаблону, в несколько колонок с паузой после заполнения каждого экрана.

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

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

Я застрял на проблеме, которую не могу понять. Для моей задачи я должен сделать некоторую работу с файлами .txt в C, и, в частности, я должен передать имена файлов, используя параметры командной строки. Допустим, у нас есть эта часть кода:

Меня смущает то, как вы работаете с этими аргументами? Где вы размещаете свой .txt файл? Я прочитал сто тем, но все еще не могу обернуть голову вокруг этого. Я использую XCode и работаю на Mac. Нужно ли каким-либо образом использовать Терминал для работы с этим кодом? Любой пролить свет на эту тему будет принята с благодарностью.

3 ответа

В XCode вы можете указать аргументы для передачи вашей программе в схеме. Перейдите в Product-> Scheme-> Edit Scheme и перейдите на вкладку «Аргументы» (см. Скриншот).

Затем любой файл загружается из того места, где XCode размещает исполняемый файл. Самый простой способ узнать, где это находится, - щелкнуть правой кнопкой мыши продукт и «показать в поиске» (см. Скриншот).

Вне XCode, например в окне терминала просто укажите параметры после имени команды, например, ./testCommandLine test.txt . Любой открытый файл - если не указан абсолютный путь - запускает поиск из текущего рабочего каталога.

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

Edit current scheme

enter image description here

Если задан относительный путь к файлу, fopen откроет файлы относительно текущего рабочего каталога. Если вы передадите абсолютный путь к вашей программе, то fopen будет использовать его. Например, если ваш file.txt находится в /home/User/file.txt , вы можете передать всю эту строку в вашу программу, и fopen найдет ее.

Шаг 1, чтобы проверить, что у вас есть параметр.

После этого вы можете использовать параметр (ы) напрямую. Обратите внимание, что argv[0] будет путем / именем исполняемого файла, argv[1] будет первым параметром (если он был передан) и так далее. При открытии файлов они должны быть либо помещены в рабочий каталог, либо вы должны указать fopen путь в дополнение к имени файла. Рабочий каталог может быть или не быть каталогом, содержащим ваш исполняемый файл, в зависимости от вашей среды сборки.

В Windows, как вы получаете доступ к аргументам, передаваемым при запуске командного файла?

Например, допустим, у меня есть программа с именем hello.bat . Когда я вхожу hello -a в командную строку Windows, как я могу сообщить своей программе, что она -a была передана в качестве аргумента?

Как и другие уже говорил, параметры , передаваемые через командную строку можно получить в пакетных файлах с пометкой %1 в %9 . Есть также два других токена, которые вы можете использовать:

  • %0 это исполняемый файл (пакетный файл) имя , как указано в командной строке .
  • %* это все параметры, указанные в командной строке - это очень полезно, если вы хотите переслать параметры в другую программу.

Есть также много важных методов, о которых нужно знать в дополнение к простому способу доступа к параметрам.

Проверка, был ли передан параметр

Это делается с помощью конструкций like IF "%

1"=="" , что верно, если и только если никакие аргументы не были переданы вообще. Обратите внимание на символ тильды, который приводит к удалению любых окружающих кавычек из значения %1 ; без тильды вы получите неожиданные результаты, если это значение включает двойные кавычки, включая возможность синтаксических ошибок.

Обработка более 9 аргументов (или просто облегчение жизни)

Если вам нужно получить доступ более чем к 9 аргументам, вы должны использовать команду SHIFT . Эта команда сдвигает значения всех аргументов на одно место, так что %0 принимает значение %1 , %1 принимает значение %2 и т. Д. %9 Принимает значение десятого аргумента (если он есть), который не был доступен ни для одной переменной перед вызовом SHIFT (введите команда SHIFT /? для дополнительных параметров).

SHIFT также полезно, когда вы хотите легко обработать параметры, не требуя, чтобы они были представлены в определенном порядке. Например, скрипт может распознавать флаги -a и -b в любом порядке. Хороший способ разбора командной строки в таких случаях

Эта схема позволяет вам анализировать довольно сложные командные строки, не сходя с ума.

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

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

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

Чтобы получить путь к каталогу, из которого был запущен командный файл (очень полезно!), Вы можете использовать

Вы можете просмотреть весь спектр этих возможностей, введя CALL /? в командной строке.

ren "Ярлык для TOTALCMD".Ink TotalCmd.Ink будет работать?

SF 1 апреля, 2008 - 21:34

Должно. Попробуйте. Если нет - сообщите, будем разбираться.

Al 2 апреля, 2008 - 08:06

Кавычка должна быть ПОСЛЕ cd, я же писал - путь, а не команда

Al 2 апреля, 2008 - 08:08

И ren всесте с сd в отдой строке нельзя, все по порядочку, по командочке.

Сначала в нужный каталог, потом дальше. т.е. расписать все на бумаге словами, столбиком, а потом все переводить в команды, и если заработает - начинать оптимизировать, наводить красоту.

Phoenix 2 апреля, 2008 - 14:56

С путем разобрался, я в папке Рабочй Стол, возникла другая проблема, я прописываю: ren "Ярлык для TOTALCMD".Ink TotalCmd.Ink выбивает "Не удается найти указанный файл"

SF 2 апреля, 2008 - 15:22

Кавычки после полного имени файла, с расширением.

Phoenix 3 апреля, 2008 - 13:23

Все равно выбивает "Не удается найти указанный файл", хотя он там есть

mike 3 апреля, 2008 - 14:26

Фениксу. Кавычек я не ставлю ещё cо времён CP/M. Всё всегда переименовывалось. Но 1) убедись, что файл Ярлык для TOTALCMD.Ink у тебя в текущем дире действительно есть, для чего введи dir Ярлык для TOTALCMD.Ink или, что ИМХО лучше, dir *TOTALCMD.* 2) убедись, что кириллица в имени файла нигде не путается с латиницей. (Не накололи ли тебя на 1-ое апреля?) А вообще, чтобы переименовать ярлык, щёлкни по нему на рабочем столе правой кнопкой, выбери "Переименовать" и именуй, как хошь. :)

Sens 3 апреля, 2008 - 14:28

ren "%USERPROFILE%\Рабочий стол\Ярлык для TOTALCMD.lnk" TotalCmd.lnk

> Все равно выбивает "Не удается найти указанный файл", хотя он там есть

Так может он уже переименован, поэтому и не находит? ;)

Sens 3 апреля, 2008 - 14:41

> Кавычек я не ставлю ещё cо времён CP/M.

Не стоит давать советов, в которых не уверены. Если путь к файлу содрежит пробел, то в Windows надо ОБЯЗАТЕЛЬНО закавычить.

> вообще, чтобы переименовать ярлык, щёлкни по нему на рабочем столе правой кнопкой, выбери "Переименовать" и именуй, как хошь. :)

Mike, как модно говорит "вы жжОте непадецки" ;) Видимо человеку надо именно так, а не иначе.

Phoenix 3 апреля, 2008 - 21:00

Огромное спасибо всем кто помог мне, и особенно Sens’у

>CD здесь ни к чему.

ren "%USERPROFILE%\Рабочий стол\Ярлык для TOTALCMD.lnk" TotalCmd.lnk

mike 4 апреля, 2008 - 01:10

>Если путь к файлу содрежит пробел, то в Windows надо ОБЯЗАТЕЛЬНО закавычить.

>Видимо человеку надо именно так.

Батник, видимо, разрабатывает.

Инна К)) 16 мая, 2009 - 14:46

На экране церез 10 минут после включения кмпа начинает мигать кажд. 2 сек.окно C\Windows\system32\cmd.exe, то черное, то белое,в черном - слова Ошибка в синтаксисе команды и все. Остальное работает.Что делать? ПОМОГИТЕ!

Логик 17 мая, 2009 - 00:27

Эдуард 18 мая, 2009 - 10:35

Меня умиляют эти вопросы. Ответ на них один: обратитесь к специалисту. Как в той персидской басне: старик пришел к соседу и просит у него меру для зерна, тот отвечает: "Иди к другому, у меня нет сита".

- Почему? Я прошу меру?

- У тебя трясутся руки, ты просыпешь зерно на пол. Придешь за совком и веником. Соберешь. Зерно надо будет просеять. А сита у меня нет. Иди к другому.

Логик 18 мая, 2009 - 16:14

Эдуард > :) Следующий вопрос будет "Чем и как". Потом "где взять".

Почти любой вирус лечится просто - перестановкой OC.

>У тебя трясутся руки, ты просыпешь зерно на пол. Придешь за совком и веником. Соберешь. Зерно надо будет просеять. А сита у меня нет. Иди к другому.

Читайте также: