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

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

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

vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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-файлах (часть 1)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    ViSiToR



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

    Цитата:
    единственный недостаток, то что надо вспомогательный файл создавать

     
    igor_andreev
    Может есть возможность как то его побороть? запустить к примеру cscript.exe (или wscript) с нужными параметрами, чтобы вернуло значение в консоль...
     
    P.S
    В шапку добавил как · Использование даты на день раньше чем сегодня (используя VBScript)

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 16:11 02-02-2007
    DocBeen



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

    Цитата:
    Держите самые простые образцы, что можно делать с ftp.exe  
    ftpscript.zip(полтора килобайта) Readme внутри, установить очень желательно, удаляется легко через Установка-удаление программ "Explorer shell extension "FTP Script""  
    и два примера mcafee-dat.zip и rarlab-job.zip, оба меньше килобайта. После запуска оставят файлики mcafee.txt и rarlab.txt  
    Это действительно самые простые, для примера, а можно уу-у какие синхронизации делать. Только надо батники уметь писать  Писались под XP, поэтому содержат команду TSKILL, на 2000 можно любую другую прибивалку процессов использовать.

     
    Пробовал Сей скрипт запускать и весьма удачно а как теперь бы его теперь сделать чтоб он с выше цитированному правилу подвергался, малость не допонимаю,  
    а готовый продукт весьма хорошим может получится:  
    к примеру у меня на работе пробовал делать скрипт, любезно предоставленный Elroir
     
    и получилось хоть до приметива но все же результаты, получаю файлик со списком всего что лежит на Фтп а как теперь бы с помощью этого списка удалить бы все с помощью:
    Цитата:
    Код:For /f %%i in (list.txt) do del %%i  
    For /f %%i in (list.txt) do ftp %%i  

    подскажите пожалуйста...

    Всего записей: 147 | Зарегистр. 15-07-2005 | Отправлено: 20:36 02-02-2007 | Исправлено: DocBeen, 20:38 02-02-2007
    igor_andreev

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

    Цитата:
    как то его побороть? запустить к примеру cscript.exe (или wscript) с нужными параметрами,
    Никак И у cscript.exe и у wscript.exe обязательный параметр <scriptname> при запуске
     
     
    Добавлено:
    DocBeen
    Все с фтп удалить - и скрипты не нужны. cd /папка , потом команда prompt и потом mdelete *.*

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 20:40 02-02-2007
    Tipulatoid



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

    Цитата:

    Код:
    Код:
    ECHO wscript.echo date-1>tmp.vbs  
    FOR /F %%A IN ('cscript tmp.vbs //Nologo') DO SET "YESTERDAY=%%A"  
    ECHO %YESTERDAY%&DEL tmp.vbs

    А можно здесь вместо порядкового номера месяца выводить название?
    Добавлено:

    Цитата:

    Код:
    Код:
    wscript.echo WeekDayName(weekday(date))

    скажет название дня недели

    Скажет, это точно, только пишет (если из батника запускать) в DOS кодировке Можно ли в cp 1251 перевести?
    chcp 1251 не помогает
     
    Добавлено:
    В принципе для себя 2-ую проблему решил вот таким скриптом, сделанном по мотивам скрипта предложенного мне Troitsky:

    Код:
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fstream1 = fso.OpenTextFile("encode.del", 1)
    Set fstream2 = fso.OpenTextFile("decode.del", 2)
     
    While Not fstream1.AtEndOfStream
        strLine = fstream1.ReadLine
        strLine = Trim(strLine)
        strLine = Replace(strLine, "ЇR-_¤_<м-ЁЄ", "Понедельник")
        strLine = Replace(strLine, "ўвRа-ЁЄ", "Вторник")
        strLine = Replace(strLine, "ба_¤ ", "Среда")
        strLine = Replace(strLine, "з_вў_а_", "Четверг")
        strLine = Replace(strLine, "Їпв-Ёж ", "Пятница")
        strLine = Replace(strLine, "бгЎЎRв ", "Суббота")
        strLine = Replace(strLine, "ўRбЄа_б_-м_", "Воскресенье")
        fstream2.Write  strLine & vbCrLf
    Wend
     
    fstream2.Close
    fstream1.Close
     
    Set fstream1 = Nothing
    Set fstream2 = Nothing
    Set fso = Nothing
     

     
    Вариант этот хорош еще тем, что позволяет изменять окончания слов, склоняя их по падежам. Например, если автоматически создается текст письма, то можно заменить

    Код:
    strLine = Replace(strLine, "Їпв-Ёж ", "Пятница")

    на

    Код:
    strLine = Replace(strLine, "Їпв-Ёж ", "Пятницу")

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

    Код:
    Я буду в Пятницу, в 13-30

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 22:55 02-02-2007 | Исправлено: Tipulatoid, 00:57 03-02-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    All
    Посмотрите, может стоит изменить шапку так?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:55 02-02-2007
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Elroir
    Имхо, это сильно ограничивает, для того чтобы что-то найти, нужно будет 2-3 страницы открывать... мы то уже знаем там всё, а вот новички там потеряются  
     
    Можно пока только “Готовые решения и частые вопросы:” заключить в more, это значительно уменьшит размер шапки.
     
    Это одно большое, моё ИМХО!

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 02:19 03-02-2007
    igor_andreev

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

    Цитата:
    Скажет, это точно, только пишет (если из батника запускать) в DOS кодировке

    Веришь-нет, до сего дня не знал Я просто никогда не пишу ничего из батника по-русски, для этого чистый vbscript есть. Хотя пользуюсь давно, я о нем упоминал на этом форуме еще в декабре 2004, как только зарегился. Таким способом я раньше папки создавал

    Код:

    ECHO wscript.echo WeekDayName(weekday(date))>tmp.vbs  
    FOR /F %%A IN ('cscript tmp.vbs //Nologo') DO MD %%A
    Нормально создает, название читаемое. А батники у меня, если лог пишут, тоже нерусскими буквами, буду я еще себе голову всякими кодировками забивать

    Код:

    @ECHO OFF
    ECHO wscript.echo weekday(date)>tmp.vbs  
    FOR /F %%A IN ('cscript tmp.vbs //Nologo') DO SET "my_token=%%A"
    FOR /F "TOKENS=%my_token%" %%A IN (
    'ECHO Sunday Monday Tuesday Wednesday Thursday Friday Saturday'
    ) DO SET "my_weekday=%%A"
    ECHO %my_weekday%&DEL tmp.vbs

     
     

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 06:58 03-02-2007
    Elroir



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

    Цитата:
    это сильно ограничивает, для того чтобы что-то найти

    У меня эта мысль тоже пробегала
    Ладно, оставим пока все как есть - действительно хорошо, когда весь список виден.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 13:23 03-02-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    All
    Как получить список всех открытых окон эксплорера? То есть мне нужен список открытых фолдеров.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:12 03-02-2007 | Исправлено: Elroir, 17:13 03-02-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Ну если у тебя в заголовках окон эксплорера пишется полный путь(в свойствах папки настраивается, Folder Options-View-Display the full path in the title bar) и есть cmdow.exe, то можно можно попробовать как-нить типа:
    cmdow | find /i "explorer" | find "\"
    Ну и там цикл FOR и сколько-то TOKENS

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 17:34 03-02-2007 | Исправлено: igor_andreev, 17:41 03-02-2007
    ViSiToR



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

    Цитата:
    если у тебя в заголовках окон эксплорера пишется полный путь

    А cmdow не понимает по класу окна?
     
    CabinetWClass (или полностью classname=CabinetWClass)

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:58 03-02-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Спасибо - то, что надо!
    Это я пытаюсь решить задачу перезапуска эксплорера, без закрытия всех окон.
    P.S. А cmdow.exe у меня копируется в Windows\System32 фолдер при установке Windows .

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:01 03-02-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    А я не знаю, что такое CabinetWClass В хэлпе cmdow про это не написано. Между прочтением мною вопроса и началом написания ответа вообще секунд тридцать прошло, если честно , особо не задумывался. Сейчас вот смотрю, наверно надо ключ /T добавить и так выведет
    cmdow /T | find /i "explorer"

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 18:07 03-02-2007
    Elroir



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

    Цитата:
    Сейчас вот смотрю, наверно надо ключ /T добавить

    Ага - я тоже на это наткнулся
    А еще надо добавить /F, чтобы не обрезались названия, в которых больше 38-и символов

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:08 03-02-2007 | Исправлено: Elroir, 18:12 03-02-2007
    igor_andreev

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

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

    А, как раз для cmdow задача и есть, она же и закроет окно и заново запустит

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 18:13 03-02-2007
    ViSiToR



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

    Цитата:
    что такое CabinetWClass  

    Это класс окна експлорера - его можно определить к примеру, при помощи WinSpy (я лично юзаю подобную утилиту от AutoIt'а - Au3Info -> AutoIt Window Information Tool).
     
    Elroir

    Цитата:
    Это я пытаюсь решить задачу перезапуска эксплорера, без закрытия всех окон.

    Если решиш отпишись плиз

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 21:07 03-02-2007
    Elroir



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

    Цитата:
    Если решиш отпишись плиз  

    Уточняю - мне нужно было восстановить открытые фолдеры после перезапуска эксплорера. То есть закрываются они в любом случае.
    Вот что получилось:

    Код:
     
    @echo off
    chcp 1251>nul
    setlocal enabledelayedexpansion
    for /f "usebackq tokens=8*" %%a in (`"cmdow /t /f | find /i "explorer""`) do (
    if /i "%%a"=="explorer" set "open_windows=!open_windows! "%%b""
    )
    taskkill /f /im explorer.exe>nul
    start explorer
    for %%a in (%open_windows%) do (  
    if /i %%a=="My Computer" (start /min explorer shell:DriveFolder) else (
    start /min explorer %%a)
    )
     

    Все фолдеры восстанавливаются со статусом Minimized.
    Я пробовал сохранять статус окна перед его закрытием, а потом восстанавливать с помощью cmdow, но это получается долго, так как надо ждать пока окно откроется, а потом уже менять его статус.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:01 03-02-2007 | Исправлено: Elroir, 23:40 09-02-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Да удобная штучка получилась, бывает нужно иногда рестартануть эксплорер, при зависаниях или еще там когда. В таком виде работает на XP Pro/2003, если вместо taskkill пользоваться tskill, то будет работать и на XP Home(У меня раньше на нескольких ноутах на работе стояла Home, оттуда привычка осталась к tskill.exe, там taskkill нету)

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 23:28 03-02-2007
    FXPELIVE

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как написать пакетник, переводящий текст вида "Heccrbq ntrcn? yf,hfyysq d fyukbqcrjq hfcrkflrb rkfdbfnehs" в "Русский текст, набранный в английской раскладке клавиатуры"?

    Всего записей: 348 | Зарегистр. 27-04-2006 | Отправлено: 04:01 04-02-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FXPELIVE
    Как в шапке "Конвертирование текста из кириллицы в латиницу", свои варианты замены только пишешь.

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 04:06 04-02-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 2
    vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru