nbsp Команда FORFILES является удобным средством выполнения заданных команд для группы файлов в пакетных заданиях.
Формат командной строки:
FORFILES [/P путь] [/M маска_поиска] [/S] [/C команда] [/D [+ | -] ]
Параметры командной строки:
/P путь — Путь, с которого начинается поиск. По умолчанию используется текущая рабочая папка (.).
/M маска_поиска — Поиск файлов с помощью маски. Маска поиска по умолчанию «*» .
/S — Рекурсивное выполнение программы forfiles во всех подпапках, аналогично «DIR /S».
/C команда — Команда, которая выполняется для каждого файла. Строки команд необходимо заключать в прямые кавычки.
Следующие переменные могут использоваться в строке команды:
Для включения специальных символов в строку команды следует использовать шестнадцатеричный код символа в формате 0xHH (например, 0x09 для кода символа табуляции).
Перед внутренними командами CMD.exe необходимо ставить «cmd /c» .
«java» не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
/D дата — Выбор файлов, у которых дата последнего изменения больше или равна (+) либо меньше или равна (-) указанной дате при использовании формата «dd.MM.yyyy»; либо файлов, у которых дата последнего изменения больше или равна (+) текущей дате плюс «dd» дней либо меньше или равна (-) текущей дате минус «dd» дней. Допустимым числом дней «dd» является любое число в диапазоне 0 — 32768. «+» используется по умолчанию, если знак не указан.
/? — Вывод справки по использованию.
Примеры использования команды FORFILES
/? — Вывод справки по использованию.
FORFILES — отобразить список файлов текущего каталога. Команда с параметрами по умолчанию аналогична команде:
«C:TempFirefox Setup 31.0.exe» изменен 22.07.2014
«C:TempICReinstall_Firefox Setup 31.0.exe» изменен 22.07.2014
«C:TempTeamViewerTeamViewer_.exe» изменен 02.07.2014
«C:Temp\Driverx64Setup.exe» изменен 16.10.2008
«C:Temp\Driverx64AutoInstall.exe» изменен 23.11.2009
Источник: ab57.ru
Forfiles не является внутренней или внешней командой исполняемой программой или пакетным файлом
Задачи на bat-файлах 12
Предыдущие части: ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 )
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно. Чтобы не копировались концевые пробелы из форума, жмите на ссылку «Редактировать» в посте, и уже из редактора копируйте батник без пробелов.
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
«python» не является внутренней или внешней командой, исполняемой программой или пакетным файлом
Для перекодирования кирилицы 8661251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
Дополняем шапку: добавляем готовые решения, полезные ссылки.
Примечание: Большие куски кода заключайте в тэг [more]
Кроме стандартной утилиты forfiles.exe есть похожий на неё скриптик pararun.cmd (ищется google поиском), который запускает команды для заданного множества файлов таким образом, что задействуется многоядерность. Например
pararun «*.exe *.dll» upx —ultra-brute -o»packed-%~n1.exe» %1
Источник: forum.ru-board.com
Проблема с командой Forfiles / P (не задокументирована?)
Но когда убираю косую черту, работает:
Я не понимаю, почему это не работает без обратной косой черты, но не работает с ней. Я не могу найти никакой официальной документации, объясняющей это. и даже не вижу ни одного упоминания об этом при запуске справки forfiles /? . Я был бы признателен за любую помощь по этому поводу.
Самое лучшее. Ошибка даже не связана с рассматриваемой проблемой.
Комментарии (4)
потому что конечная обратная косая черта экранирует последнюю двойную кавычку. Отправлю ответ и попробую объяснить.
Для некоторых команд требуется обратная косая черта в конце, для некоторых это необязательно ( xcopy ), а некоторым это не нравится. Для команд нет стандарта. Каждый программист делал свое дело, сталкиваясь с проблемами, специфичными для написанного. Основные функции Windows пытаются исправить неправильные пути, предполагая, что их нельзя спутать с правильным путем.
16.01.2019 09:57
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете.
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше.
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -.
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
Оператор pass в Python — это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Перейти к ответу Данный вопрос помечен как решенный
Ответы 2
Ответ принят как подходящий
Честно говоря, я не думаю, что это задокументировано где-либо в официальной справке (по крайней мере, то, что я видел), но на самом деле происходит то, что конечная обратная косая черта фактически экранирует последнюю двойную кавычку. На мой взгляд, это на самом деле ошибка.
Причина, по которой ошибка не связана, просто потому, что команда forfiles обнаруживает ошибку в формате из-за отсутствия двойных кавычек, которые экранированы обратной косой чертой.
Вы увидите, что этого не происходит, если у вас нет двойных кавычек, поэтому предположим, что у вас нет места на вашем пути:
Не выдаст вам ошибку, просто потому, что у baskslash нет допустимого символа для экранирования, проблема в том, что у вас есть пробел в пути, поэтому вы должны использовать двойные кавычки. Поэтому лучше всего сохранить двойные кавычки и не добавлять обратную косую черту в конце:
Или, если вы категорически против использования обратной косой черты, просто уберите ее, удвоив.
Комментарии (10)
Специальная интерпретация обратной косой черты forfiles.exe намеренно и не является ошибкой. Причина та же самая, почему также reg.exe интерпретирует обратную косую черту слева от » или как escape-символ для кавычки / обратной косой черты. Это позволяет определить строку аргумента команды (forfiles) или строку данных (reg), заключенную в двойные кавычки, содержащие двойные кавычки в любом месте строки аргумента, включая начало и конец строки аргумента в двойных кавычках. Но все возможные решения хороши.
Теперь в этом больше смысла. Благодарю вас, ребята, за ваше время.
Я не считаю это ошибкой, и вот почему . Обратная косая черта является разделителем каталогов Windows по умолчанию, ее следует использовать только при разделении компонентов пути. За последним компонентом ничего нет, и поэтому не должно быть разделителя.
Если бы я писал документацию, я бы об этом тоже не упоминал. Только тот, кто не понимает, что в разделителе нет места, если он не разделяет компоненты, может использовать его. Ошибка связана с пониманием конечных пользователей, а не с документацией разработчиков.
Тот факт, что другие командные утилиты позволяют конечному пользователю игнорировать стандартное соглашение, не означает, что разработчики этой командной утилиты ошибаются, конечный пользователь по-прежнему ошибается!
16.01.2019 10:03
Исходники C / C++, скомпилированные в исполняемые файлы, могут следовать за Анализ аргументов командной строки C++
- Arguments are delimited by white space, which is either a space or a tab.
- The caret character (^) is not recognized as an escape character or delimiter. The character is handled completely by the command-line parser in the operating system before being passed to the argv array in the program.
- A string surrounded by double quotation marks («string») is interpreted as a single argument, regardless of white space contained within. A quoted string can be embedded in an argument.
- A double quotation mark preceded by a backslash («) is interpreted as a literal double quotation mark character («).
- Backslashes are interpreted literally, unless they immediately precede a double quotation mark.
- If an even number of backslashes is followed by a double quotation mark, one backslash is placed in the argv array for every pair of backslashes, and the double quotation mark is interpreted as a string delimiter.
- If an odd number of backslashes is followed by a double quotation mark, one backslash is placed in the argv array for every pair of backslashes, and the double quotation mark is «escaped» by the remaining backslash, causing a literal double quotation mark («) to be placed in argv.
Довольно часто встречается в программах на C++. Командный интерпретатор начал свою жизнь раньше указанная обработка аргументов C++ была установлена. reg.exe и другие программы скомпилированные из источников C++ обычно имеют такую обработку аргументов.
forfiles.exe не является встроенной командой интерпретатора команд, поэтому встроенная справка cmd.exe не проинформирует вас о том, как внешние исполняемые файлы может вести себя.
Как вы обнаружили, двойные кавычки можно экранировать с помощью обратной косой черты, например » . Это позволяет вам иметь двойные кавычки в строке внутри двойных кавычек, т.е. «»string»» , чтобы котировки сохранялись программой, аргумент был передан. Чтобы избежать экранирования, удвойте обратную косую черту, то есть \ .
Вы получаете ошибку: 1 двойная кавычка удаляемой пары. и экранированная двойная кавычка сохраняется, поэтому оставшаяся двойная цитата вызывает синтаксическую ошибку.
Источник: reddeveloper.ru