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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Kilyan



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возможно ли отправить письмо(+возможное вложение) через Microsoft Exchange Server из ком. строки(может через какую утилитку)
    Программа для работы с ним (Microsoft Outlook)...

    Всего записей: 886 | Зарегистр. 04-09-2008 | Отправлено: 12:36 10-03-2009
    wolf0425



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

    Код:
    @Echo Off
     
    set URL=ftp://na_derevnu_dedu.ru/archive/
    set sedstr=s;/;\/;g
     
    Echo %URL% | Sed "%sedstr:\=\\%">tmp.sed
    For /F %%A In (tmp.sed) Do Set sURL=%%A
    Del /F /Q tmp.sed
     
    Echo URL = %URL%
    Echo.
    Echo sURL = %sURL%
     
     
    Понятно, что подобные фокусы имеют свою цену в виде ограничений по допустимым символам...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:03 10-03-2009 | Исправлено: wolf0425, 13:09 10-03-2009
    lexx

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста как автоматически менять route до внешнего сайта например pop.mail.ru, когда у него меняется ip адрес.
    т.е. сейчас вручную на 10 клиентах прописано что-то типа  
    route -p add 94.100.177.6 192.168.100.13
    Время от времени ip pop.mail.ru меняется на что-нибудь другое, и приходится прописывать маршруты вручную. С компов по ping pop.mail.ru можно получить ip адрес от ДНС сервера, как бы его занести в  
    route -p add %новый_ip_от_ping_pop.mail.ru% 192.168.100.13 чтобы применять при каждой загрузке компа?

    Всего записей: 63 | Зарегистр. 16-11-2002 | Отправлено: 13:22 10-03-2009
    igor_andreev

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

    Код:

    for /f "tokens=2 delims=[]" %a in ('ping -n 1 pop.mail.ru') do if not defined popserv set "popserv=%a"

     
     
    Добавлено:
    Пардон, двойной знак процента в %%a. И наверно надо бы еще проверку сделать, что пинг нормально прошел.

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 13:44 10-03-2009
    1nasty1



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Может быть, кто-нибудь поделится красивой приветственной надписью для этих немудреных событий при старте терминальной сессии прописан автозапуск файла run_user.cmd следующего содержания:
     
    @ECHO OFF
    START program1.lnk
    START program2.lnk
     
    Запускается в терминальной сессии в небольшой фирме. Заранее СПАСИБО!

    Всего записей: 751 | Зарегистр. 11-03-2005 | Отправлено: 15:35 10-03-2009
    Teboyev

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

    Цитата:
    [/q]
    [q]Teboyev  
     
    Цитата:Ковырял forfiles  - не получается  
     
    Можно так:  
     
    Код:  
    @Echo Off  
     
    Set "FTPDIR=C:\FTPSend"  
     
    Forfiles /M *.txt /D +%DATE% /C "cmd /c copy "@path" "%FTPDIR%""  
     
     
    А кидать на FTP из папки %FTPDIR%.  
     
    Добавлено:  
    trigliff  
    Покажите пример.

     
    Извините пожалуйста я не понимаю ничего в батниках. Если вам не трудно можете показать как полностью будет выглядить код? Ну как форфилес засунуть в батник который я показал. Спасибо большое!!!

    Всего записей: 5 | Зарегистр. 26-05-2008 | Отправлено: 17:58 10-03-2009
    Serhiy123



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я снова с вопросом насчет своего скрипта для защиты флешек от вирусов.  
     
    Для работы скрипту нужна иконка (файл .ico). Из-за этого (для удобства распространения) приходится компилировать bat-файл вместе с иконкой в exe с помощью Quick Batch File Compiler. Но в данном случае распространение в виде bat-файла было бы предпочтительнее (виден код).
     
    Вопрос: можно ли с помощью команды echo создать прямо из bat-файла иконку примерно таким образом:
     

    Код:
    echo какой-то_текст > icon.ico

     
    Если скопировать содержимое файла ico и вставить в команду - не получается.

    Всего записей: 126 | Зарегистр. 05-09-2002 | Отправлено: 21:21 10-03-2009 | Исправлено: Serhiy123, 21:24 10-03-2009
    maxi812

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Teboyev
     
     
     forfiles В WIN xP НЕ ПОДДЕРЖИВАЕТЬСЯ НАДО ФАЕЛЛ   forfiles.exe скачать и скопировать в sys32  
    и все заработает

    Всего записей: 15 | Зарегистр. 25-02-2009 | Отправлено: 03:23 11-03-2009
    Altus

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как получить полный вывод от xcopy?
    поясняю: если выполнить xcopy xxx.xxx>log.txt - то мы в log.txt получим только "Скопировано файлов", а вот вторая строка (при отсутствии файла, ошибке доступа, etc...) выводится только в консоли. Как и её тоже получить? Или даже - только её.

    Всего записей: 328 | Зарегистр. 06-09-2006 | Отправлено: 09:05 11-03-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Altus
    Наверно никак. Попробуй copy, да ещё куча есть и xxcopy и robocopy.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 09:25 11-03-2009
    Altus

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    robocopy как то старнно выставляет ерорлевел, по нему ориентироваться нельзя, xxcopy - даже не знаю что это, но всё равно в стандартной поставке венды его нет.
    если просто copy - то код батника значительно больше будет, куча проверок архивного атрибута (/m), проверок наличия файла (/u)... хотелось бы конечно малой кровью обойтись. но похоже придётся жестить.

    Всего записей: 328 | Зарегистр. 06-09-2006 | Отправлено: 09:57 11-03-2009
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Altus
    robocopy XP010 нормально errorlevel отдает. В XP026 это известный косяк(но там есть ключи /DCOPY:T, /SECFIX, /XJD, /XJF и из-за них многие плюют на errorlevel).

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 10:40 11-03-2009
    Altus

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    XP010-XP026 - это номера версий? не хочется ещё и от этого зависеть =)  
    вообще мне нужно скопировать некоторую группу файлов, и получить читаемый лог и только в случае ошибок. т.е. что именно не скопированно, куда и почему.
     
    пока переписываю под "copy", но если кто то подскажет по сабжу - буду очень благодарен.

    Всего записей: 328 | Зарегистр. 06-09-2006 | Отправлено: 11:01 11-03-2009
    NvvLazyTiger



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Altus
    Цитата:
     если выполнить xcopy xxx.xxx>log.txt - то мы в log.txt получим только "Скопировано файлов", а вот вторая строка (при отсутствии файла, ошибке доступа, etc...) выводится только в консоли. Как и её тоже получить? Или даже - только её.

    Конструкция 2> перенаправляет StdErr в нужное место.
    Конструкция xxx.xxx>log.txt 2>&1 - перенаправляет туда же, куда идёт StdOut (т.е. в log.txt).
    Переменная ErrorLevel устанавливается равной коду завершения некоторых операторов.
     
    Пример (a.cmd):
    Код:
    xcopy MyFile .. >log 2>&1
    echo Err=%ErrorLevel% >>log
    Результат (log):
    Код:
    Не найден файл: MyFile
    Скопировано файлов: 0.
    Err=4  
     

    Коды ошибок RoboCopy: Подробнее...
    Т.е. если ErrorLevel меньше 8 - всё ок.

    Всего записей: 257 | Зарегистр. 14-02-2009 | Отправлено: 11:10 11-03-2009
    ASGuard



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Навоял батничек оределения свободного места на диске на ресурсе
     
    Подскажите, как организовать удаление папок.?
    При нехватке свободного места должен удалять папку самых ранних архивов
    Но не более 3x папок за раз (защита на момент написания)
     
    Потом буду думать чтобы ежедневные хранились пол года а месячные год.
     
    Папки имеют формат типа \2008-09 и \2008-09\Manth
    Внутри файлы plan_Day_2009.01.17.rar и plan_Manth_2009.02.02.part4.rar соответственно
    раскидываются из общего каталога батничком приведённым ниже
     
    затык на :SetDir и на :ClrDir
     
    Подробнее...
     
     
    Подробнее...

    Всего записей: 16 | Зарегистр. 21-12-2006 | Отправлено: 12:35 11-03-2009
    Altus

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NvvLazyTiger
    То что нужно, ограмедное спасибо.
     
    в итоге вот такая конструкция меня спасает: xcopy xxx.xxx 2>>log.txt

    Всего записей: 328 | Зарегистр. 06-09-2006 | Отправлено: 13:21 11-03-2009 | Исправлено: Altus, 13:28 11-03-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Altus
    NvvLazyTiger
    Иногда xcopy и такое выдаёт

    Код:
    Скопировано файлов: 0.
    Err=0  

    И ещё кажется у меня были проблемы с errorlevel при нехватке места при копировании.
     
    Добавлено:
    ASGuard
    Как то сложно. А нельзя использовать утилитку определения свободного места из Windows Resource Kit Utility, FREEDISK ?
     
    Добавлено:

    Цитата:
    Потом буду думать чтобы ежедневные хранились пол года а месячные год.  

    Используй скрипты из шапки

    Цитата:
    Работа с текстом, датой, и файлами »  


    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 13:46 11-03-2009 | Исправлено: king_stiven, 14:16 11-03-2009
    Altus

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Ну в данном случае для меня это не принципиально

    Код:
     
    pushd %in%
    xcopy xxx.xxx %out%%key%>nul
    if %errorlevel% gtr 0 (xcopy xxx.xxx %out%%key% 2>>%log%&echo %in%xxx.xxx>>%log%&echo.>>%log%) else set /a nofile=nofile-1
     

    назначения переменных описывать не буду, они сами  по себе "говорящие".
    ну и соответственно потом собираем в основной лог

    Код:
     
    if %nofile%==0 (echo Все необходимые файлы %modetext2%.) else echo Не удалось %modetext3% %nofile% %ftext%:>>%log123%
    if not %nofile%==0 type %log%>>%log123%
    if not %nofile%==0 del /q %log%
    if not %nofile%==0 echo.>>%log123%
    if not %nofile%==0 echo %date% %time%>>%log123%&echo.>>%log123%&echo -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=->>%log123%&echo.>>%log123%
     

    их ещё объеденить надо по "&", что бы меньше места занимало.
    ну и в основном логе получаем такой текст:

    Код:
    Не удалось скопировать 3 файла:
     
    Не найден файл: xxx.xxx
    путь\xxx.xxx
     
    Ошибка доступа.
    путь\xxx.xxx
     
    etc...
    путь\xxx.xxx
     
    Попробуйте скопировать вручную в этот каталог:
     
    путь\xxx.xxx
     
    11.03.2009 15:02:44.97
     
    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
     

     
    при этом, если ошибок нет - то и логи не создаются, ни темповый ни основной.

    Всего записей: 328 | Зарегистр. 06-09-2006 | Отправлено: 15:03 11-03-2009 | Исправлено: Altus, 16:08 11-03-2009
    Dexxy

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем снова привет, я опять с вопросом...
    Как можно (и можно ли вообще) через батник запустить файл через меню Open With?
    Поясню:
    У меня *.iso открываются в iso-редакторе, но также я часто их открываю в НероИмейджДрайв через Open With.
    Нужен батник который открывал бы прописанный в нем файл через Open With в ИмейджДрайве не меняя основной программы (тоесть двойным кликом открывался бы iso-редактор).
    Варианты открытия файла путём запуска ИмейджДрайва через комманду с добавлением пути к файлу не катят, т.к
    хотелось бы использовать эту функцию не только на *.iso файлах и ИмейджДрайве.

    Всего записей: 3 | Зарегистр. 01-11-2008 | Отправлено: 16:20 11-03-2009 | Исправлено: Dexxy, 16:30 11-03-2009
    VictorSG



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Бодрого времени суток!
     
    Задачка такая:
    как по средством bat-файла проверить наличие принтера с определённым именем ... и если таковой имеется - завершить выполнение скрипта или перейти к определённой метке в скрипте, а если такового нет, то установить драйвер? Cитуация не в AD а Samba PDС. У меня всё устанавливается, драйвера заливаются, но вот непосредственно как опросить систему батником на наличие принтера с именем и сравнить допустим через if ..... недогоняю
     
    Спасибо

    Всего записей: 56 | Зарегистр. 23-11-2006 | Отправлено: 17:55 11-03-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