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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    Maza_Faka



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

    Цитата:
    нужен батник, который би пинговал все точки по очереди

    Цитата:
    но список непоследователен

    Как вариант: создать текстовый файл с IP-адресами в нужной последовательности и пинговать их в цикле:

    Код:
     
    @Echo Off
    For /F %%A In (wlan.txt) Do Ping %%A>>ping_log.txt
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:49 13-02-2009
    chel78



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

    Цитата:
    Как вариант: создать текстовый файл с IP-адресами в нужной последовательности и пинговать их в цикле:  

     выводит в лог вот что:  
    „«п Їа®¤®«¦Ґ-Ёп - ¦¬ЁвҐ «оЎго Є« ўЁиг . . .

    Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 08:58 13-02-2009
    Maza_Faka



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

    Цитата:
    выводит в лог вот что:

    Это кодировка DOS-866. Для корректного отображения файлов с данной кодировкой нужно использовать редакторы, которые "понимают" эту кодировку. Например AkelPad

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 10:58 13-02-2009
    Johny_x3mal



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго времени суток!
       У меня по сети гуляют два файла, источник не смог определить, но файлы легко можно удалить. Хочу накатать батник, на поиск файлов по всем разделам жесткого диска, удаление и запись истории на общесетевом ресурсе. Файлы nvmqqa.exe и khm.  
       С наскоку не получилось сделать поиск по всем разделам на винте.
       Кто-нить, помогите, как мне задать поиск файлов по всему винту?

    Всего записей: 222 | Зарегистр. 07-09-2005 | Отправлено: 11:00 13-02-2009
    whoyou

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

    Цитата:
    graydevil  


    Цитата:
    Цитата:Что надо дописать или исправить чтоб счетчик увеличивался а не начинал с ЕДИНИЦЫ  
     
    Не понял, может тебе надо  
    Set /a f_Count=%f_Count%+1  
    убрать а  
     
    Код:For %%a In (d:\outgoing\*.*) Do (  
        Set /a f_Count+=1  
        Call :Rena %%a %%~ta  
    )  
     

     
    Все это классно, но файлики там переменовывуются, а потом переносятся в архив, и папка пустая. вот в чем проблема

    Всего записей: 23 | Зарегистр. 30-01-2009 | Отправлено: 11:02 13-02-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    whoyou
    если у тебя в именах нет воскл знаков, проще отладить через

    Цитата:
    · setlocal enabledelayedexpansion и переменные окружения  

     
    Set f_Name=%1  
    Set f_Date=%2  
    Set f_Time=%3  
     
    а передаёшь два аргумента
    Do @Call :Rena %%a %%~ta  

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:03 13-02-2009
    chel78



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    я так понял?? создать  батник  

    Цитата:
    @Echo Off
    For /F %%A In (wlan.txt) Do Ping %%A>>ping_log.txt  

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

    Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 12:24 13-02-2009 | Исправлено: chel78, 12:29 13-02-2009
    whoyou

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     А можно это (для особо одаренного) на моем примере показать. В готовом виде написать, куда и чте писать. Если это не сложно.  

    Всего записей: 23 | Зарегистр. 30-01-2009 | Отправлено: 12:27 13-02-2009
    chel78



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

    Цитата:
    А можно это (для особо одаренного) на моем примере показать. В готовом виде написать, куда и чте писать. Если это не сложно.

     и если можно для меня(как ламера  
    )
    Цитата:
     
    Как вариант: создать текстовый файл с IP-адресами в нужной последовательности и пинговать их в цикле:
     
    Код:
     
    @Echo Off
    For /F %%A In (wlan.txt) Do Ping %%A>>ping_log.txt
     

     на моем примере

    Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 12:50 13-02-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    whoyou
    О кей, сначала ты мне подробненько скажешь, что ты хочешь получить, только не общими выражениями а конкретными, типа: в папке D:\1 без подпапок находятся несклько файлов, ... и т.д. И нащёт воскл знаков уточни.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:54 13-02-2009
    whoyou

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    В папку d:\outgoing переносятся с других папок файлики с разными названиями в формате txt. Там они переменовываются как out-дата-время-счетчик.dat и создается пустой файлик out-дата-время-счетчик.dat.ok  
    Затем запускантся другой батник который отправляет (переносит) все файли на другой сервер - это у меня есть.
    Через некоторое время снова пользователи снова сбрасываю файлики и цикл снова повторяется переименовка и отправка (вертушка у меня есть).
    Но при этом счетчик начинается снова с 1 а не продолжает нумерацию дальше. Мне нужно чтоб нумерация продолжалась, когда переименовываются файлики. Никаких восклицательных знаков там нет.
     
    Заранее благодарен.

    Всего записей: 23 | Зарегистр. 30-01-2009 | Отправлено: 13:25 13-02-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    whoyou  
    Правильно ли я понял:
    1.Ты запускаешь 1.bat (текст приведён на предыдущей странице), он отрабатывает нормально и закрывется. Или есть проблемы и тут?
    2. Далее запускаешь 2.bat? или по другому отправляешь файлы? Файлы переносятся и 2.bat закрывается.
    3. Ты снова запускаешь 1.bat и тут счётчик снова с еденицы идёт, а тебе надо с предыдущего батника последнее значение.
     
     
    То есть надо только счётчик поправить?
     
     

    Код:
    @Echo On
    Set f_Ext=dat
    Set f_Ok=ok
    for /f "usebackq tokens=*" %%c in ("%temp%\1.txt") do Set f_Count=%%c
    For %%a In (d:\outgoing\*.*) Do @Call :Rena %%a %%~ta
    exit
     
    goto :EOF
     
    :Rena
    Set /a f_Count=%f_Count%+1
    Set f_Name=%1
    Set f_Date=%2
    Set f_Time=%3
    Set f_Day=%f_Date:~0,2%
    Set f_Month=%f_Date:~3,2%
    Set f_Year=%f_Date:~6,4%
    Set f_Hour=%f_Time:~0,2%
    Set f_Min=%f_Time:~3,2%
    Set f_NewName=out-%f_Year%%f_Month%%f_Day%-%f_Hour%%f_Min%-%f_Count%
    echo %Set f_Count%>"%temp%\1.txt"
     
    If Exist %f_NewName% Set f_NewName=%f_NewName%-%f_Count%
    Ren %f_Name% %f_NewName%.%f_Ext%
    copy nul d:\outgoing\out-%f_Year%%f_Month%%f_Day%-%f_Hour%%f_Min%-%f_Count%.%f_Ext%.%f_Ok%
     
    goto :EOF
     

     
    Если хочешь, чтоб с еденицы снова счётчик был, надо удалить файл %temp%\1.txt

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 13:54 13-02-2009 | Исправлено: king_stiven, 14:24 13-02-2009
    Maza_Faka



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

    Цитата:
    и если можно для меня

    Пример текстового файла с IP-адресами:

    Код:
     
    192.168.0.1
    192.168.0.2
    192.168.0.3
    192.168.0.4
     

    и т. д.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:30 13-02-2009
    whoyou

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    Этот батник запускается сам по себе- выполнил переименования закрылся- потом запускается другой батник который отправляет (переносит) эти файли но другой сервер. Снова папка пустая и когда приходят новые файлики в d:\outgoing, то переименовуются они и счетчик начинается снова с ЕДИНИЦЫ, а не продолжает нумерацию дальше (обидно).
    Вот в чем проблема.
     
    Тем что приведено на предыдущей все работает на  ура но нумерация начинается с 1 после того как появляются новые фалы.

    Всего записей: 23 | Зарегистр. 30-01-2009 | Отправлено: 14:45 13-02-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    whoyou
    Проверяй решение смотри выше, только в самом низу  
    goto :EOF  
    меня смущает
     
    Добавлено:
    смотри выше

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:35 13-02-2009
    whoyou

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    Проверил, не работает, файлы что пришли так и остались  не переименованы, а пустые создались, запустил заново снова с НУЛЯ идет.

    Всего записей: 23 | Зарегистр. 30-01-2009 | Отправлено: 16:04 13-02-2009
    king_stiven

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

    Код:
    @Echo On
    Set f_Ext=dat
    Set f_Ok=ok
    for /f "usebackq tokens=*" %%c in ("%temp%\1.txt") do Set f_Count=%%c
    For %%a In (d:\outgoing\*.*) Do @Call :Rena %%a %%~ta
    exit
     
    goto :EOF
     
    :Rena
    Set /a f_Count=%f_Count%+1
    Set f_Name=%1
    Set f_Date=%2
    Set f_Time=%3
    Set f_Day=%f_Date:~0,2%
    Set f_Month=%f_Date:~3,2%
    Set f_Year=%f_Date:~6,4%
    Set f_Hour=%f_Time:~0,2%
    Set f_Min=%f_Time:~3,2%
    Set f_NewName=out-%f_Year%%f_Month%%f_Day%-%f_Hour%%f_Min%-%f_Count%
    echo %f_Count%>"%temp%\1.txt"
     
    If Exist %f_NewName% Set f_NewName=%f_NewName%-%f_Count%
    Ren %f_Name% %f_NewName%.%f_Ext%
    copy nul d:\outgoing\out-%f_Year%%f_Month%%f_Day%-%f_Hour%%f_Min%-%f_Count%.%f_Ext%.%f_Ok%
     
    goto :EOF

     
     

    Код:
    @Echo Off
    setlocal enabledelayedexpansion
    cd /d d:\outgoing
    for /f "usebackq tokens=*" %%c in ("%temp%\1.txt") do Set f_Count=%%c
    for /f "usebackq tokens=*" %%a in (`dir "d:\outgoing\*.*" /o /b /a:-d`) do (
        Set /a f_Count+=1
        Ren "%%a" "out-%Date:~6,4%%Date:~3,2%%Date:~0,2%-%Time:~0,2%%Time:~3,2%-!f_Count!.dat"
    )
    echo !f_Count!>"%temp%\1.txt"

     
    Если хочешь, чтоб с еденицы снова счётчик был, надо удалить файл %temp%\1.txt

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 17:35 13-02-2009 | Исправлено: king_stiven, 17:40 13-02-2009
    Alex1985

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а можно ли доделать батник так, что бы он проверял раз в час (ну или раз в сутки, не важно) наличие окна с заголовком "my program was crashed" и рестартить службу "my program"?

    Код:
    @set @x=0 /*
    net stop "my program"
    del "C:\my program\*.tmp"
    cscript //nologo /e:jscript "%~f0" 60000
    net start "my program"
    goto:eof */ if(isFinite(WScript.Arguments(0))) WScript.Sleep(WScript.Arguments(0))

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

    Всего записей: 814 | Зарегистр. 07-05-2004 | Отправлено: 22:55 13-02-2009 | Исправлено: Alex1985, 23:02 13-02-2009
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, пожалуйста, помогите решить такую задачу: есть файл test.txt, который может быть переименован в test.tx_, но как запретить в бат файле переименование файла test.txt, если в корневом каталоге уже есть файл test.tx_? Думаю объяснил все верно. Буду очень рад Вашей помощи.
     
    Добавлено:
    Забыл сказать, что это действие призвано блокировать многократное переименование одного и того же файла, т.е. важно лишь его первичное переименование!

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 03:22 14-02-2009
    01MDM



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

    Код:
     
    ren test.txt test.tx_ 2>nul
     

    если в разных, то:

    Код:
     
    if not exist c:\test.tx_ ren c:\folder\test.txt test.tx_  
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 06:58 14-02-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru