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

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    >только странно почему он не появляется в папке мой компьютер
    +1
     
    >лог - команда net use z: \\comp\test -> Не найден сетевой путь.
    +1
     
    >net use S: /DELETE  
    работает

    Всего записей: 190 | Зарегистр. 27-04-2006 | Отправлено: 22:37 14-01-2010 | Исправлено: zepterman, 22:42 14-01-2010
    Kirillhome



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

    Цитата:
    лог - команда net use z: \\comp\test -> Не найден сетевой путь.

    Значит, у компььютера \\comp нет сетевого (расшаренного) ресурса test
    Можно попытаться посмотреть сетевые ресурсы через net view \\comp

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 22:57 14-01-2010
    tails80486



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    @echo off
    set k1=%RANDOM:~-1%
    echo step 1
    pause
    if %k1% EQL 0 goto k1
    echo %k1%
    echo step 2
    pause
    if %k1% GTR 6 goto k1
    echo %k1%
     
    данный скрипт должен по идее проверять что бы сгенерированное число было больше нуля но не более шести, однако не работает

    Всего записей: 68 | Зарегистр. 23-11-2009 | Отправлено: 22:59 14-01-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tails80486
    if "%k1%"=="0"

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 23:44 14-01-2010 | Исправлено: king_stiven, 00:19 15-01-2010
    ZanyGamer



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А как открыть файл, который назван по русски История версий.txt
    Если в батнике пишу История_версий.txt - запускается История_версий.txt, а вот если просто пробел - не воспринимает дальше слова История и пишет файл 'История' не найден!
    Может знает как можно пробел поставить, чтобы батник его воспринял?

    Код:
    start История версий.txt

    Всего записей: 17 | Зарегистр. 10-01-2010 | Отправлено: 00:34 15-01-2010 | Исправлено: ZanyGamer, 00:36 15-01-2010
    tails80486



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    start "История версий.txt"

    Всего записей: 68 | Зарегистр. 23-11-2009 | Отправлено: 00:46 15-01-2010
    ZanyGamer



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

    Цитата:
    start "История версий.txt"

    не выходит =\

    Всего записей: 17 | Зарегистр. 10-01-2010 | Отправлено: 01:50 15-01-2010
    wolf0425



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

    Цитата:
    if %k1% EQL 0 goto k1
    данный скрипт должен по идее проверять что бы сгенерированное число было больше нуля но не более шести, однако не работает
    правильно пишется if %k1% EQU 0 goto k1  
    претензии - к переводчикам мелкомягких, самому - читать английские хэлпы
     
    Добавлено:

    Цитата:
    start "История версий.txt"
    не выходит =\
    и не должно, первый параметр в кавычках - это имя окна
    start "" "История версий.txt"

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 01:52 15-01-2010 | Исправлено: wolf0425, 02:22 15-01-2010
    ZanyGamer



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425, во! Другое дело! Большое спасибо!

    Всего записей: 17 | Зарегистр. 10-01-2010 | Отправлено: 13:45 15-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет! Тут такая проблема возникла пушу прогу для автоматического бекапа ICQ истории. В идеале прога должна делать:
    Открывать папку user по умолчанию c:\Program Files\QIP\Users\
    Открывать все папки которые там есть и если найдёт папку "History" то скопировать содержимое этой папки на фтп. В фоновом режиме (без отобржения процесса)
    Вот что у меня пока получилось : 3 файла бат  
    1. start /min 2.bat (запускает 2рой фаел свёрнутым, единственно что нашол)
    2. ftp -s:1.bat -i  
    exit (Очень важно писать выход иначе окно смд не исчезнет)
    3.open ftp2.tusur.ru
     
     
    cd /incoming/(потом идёт моя попка)
    quote pasv  (пассивный режим)
    ascii  (передача *.txt)
    mput "C:\Program Files\QIP\Users\117442\History\*.*"
    quit
    Помогите реализовать:
    Открывать все папки которые там есть и если найдёт папку "History" то скопировать содержимое этой папки на фтп. В фоновом режиме (без отобржения процесса)
    2рая проблема.  
    Нужна маленькая программа для сканирования сети тоесть пинг 192.168.0.1 до 192.168.0.255 Все отклиунувшиеся машины записать в тхт файл и положить в туже папку где и исполняемый бат. СПасибо за внимание.
    P.S Очень плохо знаю бат, если не сложно, опешите процессы. БУду очень благодарен!

    Всего записей: 17 | Зарегистр. 16-01-2010 | Отправлено: 07:55 16-01-2010 | Исправлено: takt03, 08:11 16-01-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    что имеем:
    папка X:\44
    в ней файлы (filenames) без расширения и с атрибутами:
     
    1) simple  - A
    2) hid       - AH
    3) sys      - AS
    4) sys-hid - ASH
     
    listing:
     
    X:\44>dir /b/a-d/ah/as
    sys
    sys-hid
     
    X:\44>
     
    почему выводит файл с атрибутом "только S" - sys (AS), но не выводит файл с атрибутом "только H" - hid (AH) ?
     
    резюмируя, в командах ключи с несколькими атрибутами обрабатываются по принципу "И" или "ИЛИ"
    если "И" - не должно выводится sys (AS), а только sys-hid (ASH)
    если "ИЛИ" - почему есть sys (AS) и нет hid (AH)  

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 19:59 16-01-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    mugil_cephalus
    Похоже, ключ /A в команде DIR имеет не И, и не ИЛИ, а просто - действует последний :)
     
    т.е. dir /b /ah /as выведет
    Sys
    Sys-Hid
     
    а dir /b /as /ah выведет
    Hid
    Sys-Hid
     
     
     
    takt03
    По поводу второй задачи - смотрим шапку, находим # Администрирование, автоматизация и сеть », там видим · Пример выполнения команд по результату команды ping  
     
    Берём пример KapralBel и чуть-чуть переделываем

    Код:
    @Echo Off
    rem удалил файл, куда будем выводить информацию
    if exist IP_OK.TXT del IP_OK.TXT
    rem см. команду For /? для более полного описания
    rem в данном случае - перебираем числа от 2 до 254 с шагом 1
    rem и вызваем для каждого числа  
    rem процедуру CompWork с параметром 192.168.0.Полученное_Число
    For /l %%a In (2,1,254) Do Call :CompWork 192.168.0.%%a
    rem Идём на выход
    GoTo :EOF
     
    :CompWork
    rem Пингуем, потом об откликнувшихся - пишем в файл
    Ping -n 1 %1 >Nul
    if ErrorLevel 1 GoTo :EOF
    If ErrorLevel 0 (echo IP %1 is OK >> IP_OK.TXT)
    GoTo :EOF  

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 22:40 16-01-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kirillhome
    ты прав
    X:\44>dir /b/a-d/as/ah
    hid
    sys-hid
     
    X:\44>
     
    никогда бы такой расклад не пришел бы в голову    
    спасибо
     
    Добавлено:
    Kirillhome
    не знаешь, как одной командой dir получить в вывод все три файла  

    Цитата:
     
    2) hid       - AH  
    3) sys      - AS  
    4) sys-hid - ASH  

    то есть  
    X:\44>dir ...  
    hid
    sys  
    sys-hid  
     

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 22:52 16-01-2010 | Исправлено: mugil_cephalus, 23:09 16-01-2010
    BorlandIMHO

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

    Цитата:
    Открывать все папки которые там есть и если найдёт папку "History" то скопировать содержимое этой папки на фтп
    "открывать все папки" - не понял. Нужно найти все папки History и скинуть их содержимое на ftp? Тогда так

    Код:
    @echo off
    set FTPSERVER=somthere.in.the.net
    set FTPUSER=username
    set FTPPASSWORD=password
    set "QIPUSERFOLDER=c:\Program Files\QIP\Users\"
    set "FTPFOLDER=/incoming/дальше идёт моя папка"
     
    echo open %FTPSERVER%>%dp0ftpscript.tmp
    echo %FTPUSER% >>%dp0ftpscript.tmp
    echo %FTPPASSWORD%>>%dp0ftpscript.tmp
    echo cd "%FTPFOLDER%>>%dp0ftpscript.tmp
    echo literal pasv>>%dp0ftpscript.tmp
     
    for /F "delims=" %%A in ('dir /B /A:D "%QIPUSERFOLDER:~0,-1%"') do (
    for /r  "%%~dpnxA" %%B in (History) do (
    echo lcd "%%~dpnxB">>%dp0ftpscript.tmp
    echo mkdir "%FTPFOLDER%/%%~nxA">>%dp0ftpscript.tmp
    echo cd "%FTPFOLDER%/%%~nxA">>%dp0ftpscript.tmp
    for /F "delims=" %%C in ('dir /B "%%~dpnxB') do (
    echo put "%%~nxB">>%dp0ftpscript.tmp
    )
    )
    )
    echo by>>%dp0ftpscript.tmp
    ftp /s:%dp0ftpscript.tmp
    exit
     
    Словами: ищутся папки History в каждой подпапке c:\Program Files\QIP\Users\. Насколь я понимаю, эти подпапки соответствуют учёткам в квипе?.. Если в папке учётки найдена подпапка History (c любой глубиной вложения) - на ftp сервере в папке "/incoming/дальше идёт моя папка" создаётся папка соответствующей учётки, в которую копируются все файлы из соответствующей папки History.
    Причём - сначала формируется файлик ftpscript.tmp (задание для ftp-клиента), а потом происходит собственно аплоад.  
     
    Ограничения:  
    1. Cтандартные для виндовой консоли. Т.е. никаких спецсимволов (<>&"^) и юникода в именах/логине/пароле
    2. Предполагается, что в дебрях каждой учётки скрыта только одна папка History. Что будет, если таких папок несколько - не знаю. Скорее всего - всё их содержимое ляжет в одну папку на сервере, файлы с одинаковыми именами будут затирать друг друга...
    3. Предполагается, что в папке на ftp-сервере пусто. Точнее - нет папок, совпадающих по имени с вновь создаваемыми. Что будет, если таковые есть - опять же представляю плохо... Хотя скорее всего - новые файлы лягут поверх существующих...


    ----------
    http://www.imho.ws

    Всего записей: 2615 | Зарегистр. 12-10-2006 | Отправлено: 00:05 17-01-2010 | Исправлено: BorlandIMHO, 00:54 17-01-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    mugil_cephalus
    А нужно только имеющие эти атрибуты - или можно все????
    если все, то просто
    dir /b/a
     
    (полное описание DIR)

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 00:26 17-01-2010
    wolf0425



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

    Цитата:
    если все, то просто
    dir /b/a
    лучше dir /b/a-d
     

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 06:13 17-01-2010 | Исправлено: wolf0425, 06:18 17-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BorlandIMHO спасибо. Как я вижу ты не только помог с решением проблемы но и подсказал как подключится к фтп из одного файла, за Это ОГРОМНОЕ СПАСИБО! Приступлю к тестированию.  
     
    Добавлено:
    cd "/incoming/1>>dp0ftpscript.tmp
    Непредвиденное появление: >>.
    D:\111>
     
    Пишет ошибку. Пробывал в другую директорию... Всё равно ошибка, даже пробовал в корень, всё равно та же ошибка.
    Если не сложно можеш литературы дать, почитать. У меня только http://systemnews.com.ru/?mod=art&part=dos&id=001 И маленький справочник по батникам "echo (literal) pasv" такой команды не знаю (

    Всего записей: 17 | Зарегистр. 16-01-2010 | Отправлено: 07:50 17-01-2010 | Исправлено: takt03, 09:26 17-01-2010
    wolf0425



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

    Цитата:
    cd "/incoming/1>>dp0ftpscript.tmp
    Непредвиденное появление: >>.  
    а чего же ты хотел с незакрытой " ??
    вообще правильный формат это  
    1>>"%~dp0ftpscript.tmp" echo cd /incoming/куда_надо
    а то что выше понаписали просто провоцирует ошибки.
     
    Добавлено:

    Цитата:
    "echo (literal) pasv" такой команды не знаю (
    какой - команды echo в батнике или команды literal в ftp скрипте? или команды pasv в нем же?
    встроенный хэлп cmd/ftp уже не помогает?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 09:47 17-01-2010 | Исправлено: wolf0425, 10:01 17-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ftp> help
    Допускается сокращение команд при вводе.  Набор команд:
     
    !               delete          literal         prompt          send
    ?               debug           ls              put             status
    append          dir             mdelete         pwd             trace
    ascii           disconnect      mdir            quit            type
    bell            get             mget            quote           user
    binary          glob            mkdir           recv            verbose
    bye             hash            mls             remotehelp
    cd              help            mput            rename
    close           lcd             open            rmdir
    ftp>
    Вчё что есть, без описаний итд..  
     
    Спасибо wolf0425 щас попробую.

    Всего записей: 17 | Зарегистр. 16-01-2010 | Отправлено: 10:21 17-01-2010
    wolf0425



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

    Цитата:
    Вчё что есть, без описаний итд..  


    Код:
    ftp> help literal
    literal         Send arbitrary ftp command
    перевод нужен?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 10:46 17-01-2010
       

    Страницы: 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