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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117

   

vu1tur



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    levn
    echo %time%>> 1.log

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:59 29-07-2009
    levn

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    это выводит системное время, а мне нужно вывести время, за которое батник отрабатывает.
    я измерял это визуально - где-то за 30-50 секунд, а теперь это нужно мне в лог прописывать. Как - не знаю.

    Всего записей: 13 | Зарегистр. 17-04-2009 | Отправлено: 16:03 29-07-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    с точностью до секунды пойдёт?

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 16:13 29-07-2009
    levn

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    да, пойдет.

    Всего записей: 13 | Зарегистр. 17-04-2009 | Отправлено: 16:17 29-07-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    http://forum.ru-board.com/topic.cgi?forum=62&topic=15343&start=420
    Вот мой вариант, но заточен под мой формат. не более часа показывает
    for /f "tokens=2,3 delims=:" %%a in ("%Time:~0,-3%") do (
        set min_begin=%%a
        set sec_begin=%%b
    )
    ping -n 16 127.0.0.1>nul  
    for /f "tokens=2,3 delims=:" %%a in ("%Time:~0,-3%") do (
        if "%%b" LSS "%sec_begin%" (
            set /a sec+=60
            set /a min-=1
        )
        if "%%a" LSS "%min_begin%" set /a min+=60
        set /a sec+=1%%b-1%sec_begin%
        set /a min+=1%%a-1%min_begin%
    )
    echo %min%min%sec%sec
    pause

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 16:26 29-07-2009 | Исправлено: king_stiven, 10:35 30-07-2009
    Upek

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый вечер, Всемогущий ALL!
    Подскажите пожалуйста как узнать, дату и время создания файла вне зависимости от региональных настроек системы?
     

    Всего записей: 22 | Зарегистр. 08-07-2006 | Отправлено: 16:58 29-07-2009
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 17:08 29-07-2009
    Upek

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven Там что то одни скрипты на узнавание текущей системной даты, а мне бы узнать дату создания файла.
    Примерно в таком формате: 200907291240
     
    Вот нашел  
    WScript.Quit (DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments.Item(0)).DateCreated, Now))
     
    Только не врублюсь как тут именно возвращать  DateCreated

    Всего записей: 22 | Зарегистр. 08-07-2006 | Отправлено: 17:50 29-07-2009 | Исправлено: Upek, 18:00 29-07-2009
    TsAndr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помочь кто нибудь может???
     есть много файлов в одном каталоге:
    94107256.DBF
    94001256.DBF
    94102230609230609.dbf
    94101220609220609.dbf
    .....
     
    как их раскидать по разным каталогам, те что 9???????.DBF в один каталог, а те с длинным именем в другой???
     
    move /Y "9???????.DBF" x:\work\out1
    move /Y "9????????????????.DBF" x:\work\out2
     
    это не работает, все файлы перекидываются в  out1

    Всего записей: 8 | Зарегистр. 23-12-2005 | Отправлено: 19:14 29-07-2009
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:50 29-07-2009
    TsAndr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Везет, а че мне делать?

    Всего записей: 8 | Зарегистр. 23-12-2005 | Отправлено: 20:06 29-07-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TsAndr
    Спроси у сэнсеев, обычно винды стандартны. скорее всего какая то ошибка. можешь целиком батник выложить.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:25 29-07-2009
    Upek

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TsAndr
    Вот  небольшой код у себя проверил, делает как надо )
     
     

    Код:
    @echo off
    for /f "usebackq tokens=*" %%a in (`dir 9*.dbf /a-d /on /b`) do (
    if "%%~sna"=="%%~na" (move /Y %%a out1) else (move /Y %%a out2)
    )
     

    Всего записей: 22 | Зарегистр. 08-07-2006 | Отправлено: 00:57 30-07-2009 | Исправлено: Upek, 00:58 30-07-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    levn
    Цитата:
    как вывести в лог файл время выполнения команд батником.  

    для начала его надо подсчитать

    Код:
    Set /a Time#s=((0%Time:~0,1%)*600 + (%Time:~1,1%)*60 + (%Time:~3,1%)*10 + (%Time:~4,1%))*60 + (%Time:~6,1%)*10 + (%Time:~7,1%)
     
    rem тут вписывается то, время исполнения чего надо померить
     
    Set /a Time#E=((0%Time:~0,1%)*600 + (%Time:~1,1%)*60 + (%Time:~3,1%)*10 + (%Time:~4,1%))*60 + (%Time:~6,1%)*10 + (%Time:~7,1%) - %Time#S%
    echo spoiled  %Time#E% sec > logfile

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

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 01:40 30-07-2009 | Исправлено: wolf0425, 01:54 30-07-2009
    TsAndr

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

    Цитата:
    king_stiven
    Вот  небольшой код у себя проверил, делает как надо )  

     
    Вот потестил, но все время он срабатывает на истину, т.е. снова валится в один каталог

    Код:
     
    S:\work>(
    if "94001060509060509" == "94001060509060509" (move /Y S:\work\in\94001060509060509.dbf S:\work\out1 )  else (move /Y S:\work\in\94001060509060509.dbf S:\work\out2 )
     pause
    )
    Для продолжения нажмите любую клавишу . . .
     
    S:\work>(
    if "94001080509080509" == "94001080509080509" (move /Y S:\work\in\94001080509080509.dbf S:\work\out1 )  else (move /Y S:\work\in\94001080509080509.dbf S:\work\out2 )
     pause
    )
    Для продолжения нажмите любую клавишу . . .
     
    S:\work>(
    if "94001256" == "94001256" (move /Y S:\work\in\94001256.DBF S:\work\out1 )  else (move /Y S:\work\in\94001256.DBF S:\work\out2 )
     pause
    )
     

    Всего записей: 8 | Зарегистр. 23-12-2005 | Отправлено: 09:20 30-07-2009
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TsAndr
    Не надо было создание коротких имён файлов запрещать.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 09:44 30-07-2009
    TsAndr

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

    Всего записей: 8 | Зарегистр. 23-12-2005 | Отправлено: 09:48 30-07-2009 | Исправлено: TsAndr, 09:49 30-07-2009
    ashtroy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день
     
    700 страниц к чтению к сожалению не осилил.
    Подскажите пожалуйста как написать бантик, который будет смотреть файлы в директории и удалять файлы определенные файлы дата создания которых больше месяца назад от текущей даты?

    Всего записей: 1210 | Зарегистр. 09-09-2006 | Отправлено: 10:47 30-07-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ashtroy
    В шапке
    Работа с текстом, датой, и файлами »  
    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=379&limit=1&m=1#1

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 10:55 30-07-2009
    ashtroy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Почитал попробовал ,ч естно говоря не получилось.
    Я изменил  
    "%fgh%" created more than 14 days ago  на erase
    но файлы не стёрлись

    Всего записей: 1210 | Зарегистр. 09-09-2006 | Отправлено: 11:11 30-07-2009
       

    Страницы: 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru