Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Командная строка в Windows (MS-DOS)


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Валерий Ахметович Набиуллин aka ValeryN
Статус: Мастер-Эксперт
Рейтинг: 3481
∙ повысить рейтинг »
Алексеев Владимир
Статус: Профессионал
Рейтинг: 3006
∙ повысить рейтинг »
Kom906
Статус: Студент
Рейтинг: 2328
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Установка и настройка ОС / Командная строка в Windows (консоль)

Номер выпуска:144
Дата выхода:09.10.2010, 02:00
Администратор рассылки:Владимир Лазурко, Профессионал
Подписчиков / экспертов:324 / 220
Вопросов / ответов:1 / 1

Вопрос № 180149: Напишите пожалуqста поподробней, что делает каждая строчка это батника [*1*] протестите корректно ли работает? можно ли написать батник в более просто виде? если да напишите пожалуйста:) Условие : Пусть в заданном каталоге записаны файлы ...



Вопрос № 180149:

Напишите пожалуqста поподробней, что делает каждая строчка это батника [*1*]
протестите корректно ли работает? можно ли написать батник в более просто виде? если да напишите пожалуйста:)

Условие : Пусть в заданном каталоге записаны файлы вида ММДД*.* (номера месяца и дня в месяце, после которых идут произвольные символы). Нужно с помощью командного файла для каждой встречающейся даты создать подкаталог (имя ММДД) и переместить туда все соответствующие файлы

cам батник : @Echo Off

rem ...

Set Where=D:\Delete
Set Maska=????*.*

FOR %%i IN ("%Where%\%Maska%") DO Call :Razbroska "%%i"

GoTo :Eof

:Razbroska
If Not Exist %1 GoTo :Eof

Set Papka=%~n1
Set Papka=%Papka:~0,2%%Papka:~2,2%

Md "%Where%\%Papka%"
Move /y "%Where%\%Papka%*.*" "%Where%\%Papka%\" >nul 1>nul

GoTo :Eof

Отправлен: 04.10.2010, 01:43
Вопрос задал: Марат Курманбакиев, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Megaloman, Профессионал :
Здравствуйте, Марат Курманбакиев.

В батнике использованы команды, описание которых можно получить в окне командной строки, введя название команды и через пробел /?
Например, For /?
Итак:
Echo - Вывод сообщений и переключение режима отображения команд на экране. @Echo Off -подавляет отображение комманд на экране. @ - подавляет вывод на экрае самой Echo
rem - комментарии по тексту
Set - присваивание переменной значения
Set Where=D:\Delete - здесь переменной Where присваивается строка с указанием пути к папке, где хранятся исходные файлы и где будут образованы подпапки.
Set Maska=????*.* - здесь переменной Maska задаётся маска искомых файлов (т е шаблон их поиска). Здесь после 4 любых знаков в имени файла (????) могут следовать любые знаки в названии в строке любой длины (*), файл - с произвольным расширением (.*).
Контроля на то, цифры в имени или буквы, нет (Вы не заказывали)
For - цикл, который просматривает все файлы в указанной папке по указанной маске, здесь
"%Where%\%Maska%" при исполнении примет вид "D:\Delete\????*.*"
Кавычки использованы для того, что если в имени папки или маске файлов будет пробел, то такие имена будут обрабатываться корректно.
При этом последовательно в цикле переменной %%i присваивается полное имя файла из указанной папки отвечающее указанной маске.
В цикле командой Call вызывается подпрограмма Razborka в которую как параметр передаётся полное имя файла.
За циклом следует GoTo :Eof -переход на конец батника.
:Razbroska - метка (имя) подпрограммы, на которую мы сослались в команде Call. Переданный туда параметр идентифицируется как %1 (в нём содержится полное имя файла.
If Not Exist %1 GoTo :Eof - если указанного файла уже нет, то мы идём на конец батника (тут это эквивалентно выходу из подпрограммы - нам в этом случае в подпрограмме нечего делать)
%~n1 -из полного и мени файла, принятого из параметра %1 выделяем только его имя (без пути, расширения и кавычек) -см. описание For /?, присваиваем переменной Papka
Из строки в переменной %Papka% последовательно вырезаем по два символа с нулевой позиции и со второй (по вашему заданию это значение соответствует MM и ДД). В принципе, можно было бы написать и одним действием Set Papka=%Papka:~0,4% - то есть вырезать сразу 4 символа.
Далее командой Md создаём в указанной папке из переменной %Where% подпапку с именем взятым по 4 первым символам имени пришедшего в параметре файла. (кавычки - для корректной обработки имён файлов с пробелами)
Командой Move перемещаем в неё из исходной папки все файлы, имя которых начинается на те же 4 символа (у вас это ММ и ДД), условно говоря D:\Delete\ММДД*.* где ММ и ДД конкретные месяц и день (по условию задачи иных файлов в папке нет)
>nul 1>nul перенаправляет вывод для подавления сообщений о перемещении файла и возможные сообщения о невозможности перемещения файла.
GoTo :Eof - переход на конец батника. В данной конкретной ситуации без него можно обойтись, но вставлено затем, если за подпрограммой необходимо будет разместить еще какой-нибудь код.






-----
Нет времени на медленные танцы

Ответ отправил: Megaloman, Профессионал
Ответ отправлен: 04.10.2010, 11:34
Номер ответа: 263325

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 263325 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFPRO.RU, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.22 от 04.10.2010

    В избранное