Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4

Модерирует : KLASS, IFkO

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах
(часть 1, часть 2, часть 3)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR
.
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elisaveta

    Цитата:
    2.Вывести на экран имена скрытых файлов на указаном диске(С возможностью выбора диска с сувщевтвующих).Выводить надо по одному,с возможностью сделать или его не сыкрытым(attrib -h) или вывести на экран следующий скрытый файл с этого диска.


    Код:
     
    @echo off
    set /p "disk=Choose the disk : "
    for /f "tokens=*" %%a in ('dir /ah-d /b /s %disk%:\ 2^>nul') do call :unhide "%%a"
    goto :EOF  
    :unhide
    echo %~1
    set /p "ans=Remove the attribute "hidden" from this file (y,n)? "
    if "ans"=="y" attrib -r %1
     


    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:56 20-12-2007
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, подскажите как в cmd работать с массивами?
    вот такая задача: есть простой список элементов (в данном случае список пользователей), например:

    Код:
    Иванов Андрей Николаевич
    Матвеева Лариса Валентиновна
    Алексеева Мария Анатольевна

    Скажем, нужно для каждого элемента создать файл с именем элемента.
    Список может быть в отдельном файле или в теле сценария. Это непринципиально

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 09:17 20-12-2007 | Исправлено: cluster, 09:31 20-12-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    cluster
    cmd не умеет работать с массивами. Он умеет проходить по всем строчкам файла и разбирать каждую строчку на отдельные "токены" (tokens). Разделители для токенов можно задавать.
    В твоем случае, если я правильно понял, надо пройтись по всем строчкам списка, не разделяя строчку на токены. Если все верно, тогда делаем так:
    1. Выносим список в отдельный файл, скажем list.txt.
    2. Создаем и запускаем батник:

    Код:
     
    @echo off
    for /f "tokens=*" %%a in (list.txt) do set /p=<nul>"%%a"
     

    Если файлы создаются с именами в неправильной кодировке, надо добавить второй строчкой команду "chcp 1251>nul"

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 10:34 20-12-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    cluster
    В чистом виде массивов как таковых нет, но можно создать псевдомассив из собрания переменных. Например:

    Код:
     
    @echo off
    setlocal
    set "staff:Дирижер=Иван Иваныч"
    set "staff:Скрипач=Марк Яковлевич"
    set "staff:Билeтер=Рая Павловна"
     
    for /f "tokens=2,3 delims=:=" %%i in ('set staff') do echo %%j это %%i
     

     
    Или если быть ближе к теме:

    Код:
     
    @echo off
    setlocal
    set "users:01=Иван Иваныч"
    set "users:02=Марк Яковлевич"
    set "users:03=Рая Павловна"
     
    for /f "tokens=2 delims==" %%i in ('set users') do cd.>"%%i.txt"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:03 20-12-2007 | Исправлено: 01MDM, 13:05 20-12-2007
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    посоветуйте как быстро найти самый свежий из файлов типа  
    folder1\file.ext
    folder3\file.ext
    folder6\file.ext
    folder9\file.ext
     
    список папок - генерится,  
    file.ext имеет атрибут hiden
     
    Сканировать папки folder*\ на вложенные подкаталоги НЕ нужно (и незачем и медленно будет  - там много всего), интересует именно лежащий в корне каждой папки файл.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:07 20-12-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Наверно, если файлы небольшие, быстрее всего будет не вытаскивание и сравнение даты и времени, а копирование файла file.ext из каждой папки (for-ом) в определенную директорию командой xcopy /D и анализ выполнения команды по errorlevel-у. Ну и, соответственно, сохранение названия последней директории, из которой копирование прошло успешно.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:58 20-12-2007
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir в конкретной задумке - копирование не годится: минимум один из файлов залочен намертво.
    Да и файлы бывают великоваты для копирования - один вот вижу ~8Мб.
    можно, правда, попробовать соседнее имяфайла - они по примерно одинаковому закону меняются и файлики поменьше, надо подумать  - всегда ли соответствует порядок...
    Но всё равно чем-то не нравится.
     
    ох, видимо так и придется делать вложенные for для выковыривания времени...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:20 20-12-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Посмотри в сторону wmic

    Код:
     
    wmic path CIM_LogicalFile where (FileName="index" and Extension="html" and Hidden=true) get CreationDate,Path
     

    Выведет все файлы index.html атрибутом "h" на логическом (?) диске с полями даты создания и пути к файлу, что мне кажется удобней отсортировать

    Код:
     
    wmic path CIM_LogicalFile get /?
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:25 20-12-2007
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM мне "на логическом диске" даром не сдалось, причем даже проверка всех подкаталогов перечисленных папок - уже недопустима по времени.
    Надо проверить 2-10 конкретных файлов, лежащих в одном (строго) шаге от заданного каталога.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:48 20-12-2007
    gogo222

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Создать командный файл К6.bat, который проверяет наличие заданного в качестве параметра файла и в случае, если файл существует, ищет в нем подстроку, также заданную как параметр.          для Windows XP
    ПОМОГИТЕ СДЕЛАТЬ! СРОЧНО!!

    Всего записей: 2 | Зарегистр. 18-12-2007 | Отправлено: 21:22 20-12-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gogo222

    Код:
     
    @echo off
    if exist "%~1" findstr "%~2" "%~1"
     


    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:40 20-12-2007
    kventom

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir если не сложно можно в примерах?

    Всего записей: 1 | Зарегистр. 12-10-2005 | Отправлено: 22:56 20-12-2007
    w3rd



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли сделать такой вот батник:
    Скачивается файл с фтп сервера в указанную папку. В этой папке такой же файл с таким же именем, нужно сравнить и если есть различие - заменить свежескачанным файлом.
    Спасибо.

    Всего записей: 4 | Зарегистр. 09-06-2006 | Отправлено: 23:04 20-12-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    w3rd

    Цитата:
    Скачивается файл с фтп сервера в указанную папку. В этой папке такой же файл с таким же именем, нужно сравнить и если есть различие - заменить свежескачанным файлом.  

    А зачем что-то сравнивать? Просто скачать и все.
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 23:20 20-12-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
     
    Надо проверить 2-10 конкретных файлов, лежащих в одном (строго) шаге от заданного каталога.
     
    А чуть чуть поподробней, с конкретными примерами имён? Что значит самый свежий-по созданию или изменению?Проверить 10 файлов, это должно занять каке то доли секунды.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 23:24 20-12-2007 | Исправлено: king_stiven, 23:38 20-12-2007
    w3rd



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ можно в принципе и не сравнивать, но желательно сравнить, а в идеале ещё и выдать сообщение: "Нет изменений" или типа того. Реально сделать ?

    Всего записей: 4 | Зарегистр. 09-06-2006 | Отправлено: 23:26 20-12-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    w3rd
     

    Код:
    ren file tmp.tmp
    wget .... file
    comp file tmp.tmp >nul
    if not errorlevel 0 (
      echo Файл обновился
    )
    del /q tmp.tmp


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 23:42 20-12-2007 | Исправлено: NIKZZZZ, 23:44 20-12-2007
    w3rd



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ, а директорию для скачки куда вставить ?
    Можешь для примера написать: file.txt скачивается с www.12345.com в директорию C:/folder
    Спасибо.

    Всего записей: 4 | Зарегистр. 09-06-2006 | Отправлено: 00:06 21-12-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kventom

    Цитата:
    если не сложно можно в примерах?

    Что в примерах?

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:09 21-12-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    w3rd

    Цитата:
    директорию для скачки куда вставить ?

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

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:41 21-12-2007
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru