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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kirillhome
    wolf0425
    вы свидетели, зарекаюсь, - чтоб я еще хоть раз пользовал help из cmd - ни в жизнь, уже столько раз подводила, теперь и с dir - теперь только на hh ntcmds.chm
    ничего в help'e cmd нет про "Если параметр /a указан без атрибутов, команда dir выводит имена всех файлов, включая скрытые и системные."
    p.s.
    не говоря уж про в который раз найденнные опечатки (сравните) :
    dir /?
    /B        Вывод только имен файлов.
    ------
    ntcmds.chm
    /b  
    Перечисление каждого имени файла (включая расширение) или каталога на отдельной строке.  

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:54 17-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как я понял :
    echo open %FTPSERVER%>"%~dp0ftpscript.tmp"
    echo %FTPUSER% >>"%~dp0ftpscript.tmp"
    echo %FTPPASSWORD%>>"%~dp0ftpscript.tmp"
    echo cd "%FTPFOLDER%">>"%~dp0ftpscript.tmp" echo cd /incoming/1
    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
     
    Не чего не работает  
    wolf0425 Помоги правильно написать, пожалуйста.

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kirillhome
    wolf0425
    X:\44>dir /b/a
    hid
    simple
    sys
    sys-hid
     
    X:\44>
     
    Добавлено:
    слышал, что на bat-"языке" более-менее серьезного вируса не напишешь (разве что del ntldr или del sam - вредительство или поиск и ftp-пересылка *.dat с private info)

    Цитата:
    , что известная в свое время вирмейкерская группа Stealth (выпускавшая электронный журнал о вирусах Infected Voice) опубликовала исходный текст полиморфного вируса, написанного целиком на .bat-языке.
     - Ссылка
     
    Добавлено:
    takt03

    Цитата:
    Если не сложно можеш литературы дать, почитать.  

    Уильям Станек - Командная строка Microsoft Windows http://rapidshare.com/files/89629093/Stanek_CLI_MS_Win.rar

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:56 17-01-2010
    wolf0425



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

    Цитата:
    не говоря уж про в который раз найденнные опечатки (сравните) :
    dir /?
    /B        Вывод только имен файлов.  
    ага, заодно смотрим первоисточник:
    Цитата:
    dir /?
      /B          Uses bare format (no heading information or summary).
    какая-то нездоровая тенденция: встроенные хэлпы на русском являются левой поделкой у половины микросовтовских программ. Хотя в изданных микрософтом отдельных мануалах - такой разницы с английскими нету.
     
     
    Добавлено:

    Цитата:
    Как я понял :
    echo cd "%FTPFOLDER%">>"%~dp0ftpscript.tmp" echo cd /incoming/1  
    ну откуда такой хвост подцепил?
     

    Цитата:
    for /F "delims=" %%C in ('dir /B "%%~dpnxB') do (  
    куда " потерял?
     

    Цитата:
    for /F "delims=" %%A in ('dir /B /A:D "%QIPUSERFOLDER:~0,-1%"')  
    do (
    for /r  "%%~dpnxA"
    как думаешь, ~dp - должен там браться из астрала или откуда? в выводе dir /B /A:D - путей нет
     
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 11:49 17-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Спасибо за книгу. То что я так давно искал )

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



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

    Цитата:
    Открывать все папки которые там есть и если найдёт папку "History" то скопировать содержимое этой папки на фтп. В фоновом режиме (без отобржения процесса)  
    сожержимое какой папки надо скоприровать - папки "History" или папки юзера, соедржащей "History"? копировать всё с подпапками?
    если весь мусор с подпапками - почему не скопировать всю папку "C:\Program Files\QIP\Users" ?
     
    в общем - вот копирование только файлов из папок истории, проверяй.
     

    Код:
    @echo off
    set FTPSERVER=somthere.in.the.net
    set FTPUSER=username
    set FTPPASSWORD=password
    set "QIPUSERFOLDER=c:\Program Files\QIP\Users\"
    set "FTPFOLDER=/incoming/myfolder"
         
    1>"%~dp0ftpscript.tmp" (
        echo open %FTPSERVER%
        echo %FTPUSER%
        echo %FTPPASSWORD%
        echo cd "%FTPFOLDER%"
        echo literal pasv
    )
                                           
    for /D %%A in ("%QIPUSERFOLDER%*") do 1>>"%~dp0ftpscript.tmp" (
        echo mkdir "%FTPFOLDER%/%%~nxA"
        echo lcd "%%~fA"
        Echo cd "%FTPFOLDER%/%%~nxA"
        for /f "delims=" %%B in ('dir /b/s/a-d "%%~A\history\*"') do echo put "%%~nxB"
    )
    1>>"%~dp0ftpscript.tmp" echo by
     
    ftp -i -s:"%dp0ftpscript.tmp"
    exit  

     
    _srvlog.txt аккаунта 123123123 кладется на ftp в /incoming/myfolder/123123123/_srvlog.txt остальные тексты истории - рядом.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:40 17-01-2010 | Исправлено: wolf0425, 18:03 17-01-2010
    Black_Swan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Гуру помогите пожалуйста решением.
    У меня следующая задача. Создать бат файлом инсталлятор который после запроса IP компьютера произведет удаленную установку на нем. У меня все уже готово и работает, но для полноты решения не хватает инструкции создания папки с ярлыками по пути "C:\Documents and Settings\All Users\Главное меню\Программы", затык в том что у eng версии винды (WinXP) путь другой, и переменных под него нет.
     
    Помогите пожалуйста кодом, как вы решили бы эту задачу создавая локально такую папку.
    У меня пока мыслей 0, или очень извращенные варианты...

    Всего записей: 40 | Зарегистр. 20-03-2006 | Отправлено: 14:33 17-01-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    у меня (xp sp3 rus) в ntcmds.chm:
    Del (erase)Удаление заданных файлов.
     
    Синтаксис
    del [диск:][путь] имя_файла [ ...] [/p] [/f] [/s] [/q] [/a[:атрибуты]]
     
    думаю нужно бы - ... [/a[[:]атрибуты]]  -  так как у меня на практике работает и так: del /ah
     
    ------------------------
    с dir "файлы со всеми атрибутами" понятно, а с del ?  :
    чтобы удалить файлы, скопом,  вот с такими атрибутами
     
    2) hid       - AH  
    3) sys      - AS  
    4) sys-hid - ASH
    5) red       - AR
     
    нужно так - del /ahsr    ??

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



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Black_Swan
    А если просто создавать ярлык и в  
    C:\Documents and Settings\All Users\Главное меню\Программы
    и в
    C:\Documents and Settings\All Users\Main Menu\Programms
     
    Во всяком случае обратное - я точно видел (когда английские программы устанавливали не в "Главное меню\Программы", а в "Main Menu\Programms")...
     

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ошибка чтение пароля :
    D:\111>6.bat
    ftp> open s24.turbobit.ru
    Связь с s24.turbobit.ru.
    220---------- Welcome to Pure-FTPd [privsep] ----------
    220-You are user number 30 of 50 allowed.
    220-Local time is now 15:09. Server port: 21.
    220-This is a private system - No anonymous login
    220 You will be disconnected after 15 minutes of inactivity.
    Пользователь (s24.turbobit.runone)):
    331 User *****~ OK. Password required
    Ошибка чтения пароля
     
    530 Login authentication failed
    Сбой входа.
    ftp>
    Такая вот ошибочка.
     
    ftp -s:"%dp0ftpscript.tmp" -i  "/s " не правельно!

    Всего записей: 17 | Зарегистр. 16-01-2010 | Отправлено: 15:10 17-01-2010 | Исправлено: takt03, 15:24 17-01-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    mugil_cephalus
    в DEL - то же, что и в DIR.
    Т.е. все файлы - это del *.* /a:
     
    del /ahsr - т.е. И hiden, И system И read-only одновременно!

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kirillhome
    у меня в ntcmds.chm для dir указано - Если параметр /a указан без атрибутов, команда dir выводит имена всех файлов, включая скрытые и системные. , а для del - такого нет.
    это хорошо, что можно -
    Цитата:
    Т.е. все файлы - это del *.* /a:  

     
     
    Добавлено:
    Black_Swan
     
    %ALLUSERSPROFILE%\Start Menu\Programs

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 15:38 17-01-2010
    Black_Swan



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

    Цитата:
    Black_Swan
    А если просто создавать ярлык и в  
    C:\Documents and Settings\All Users\Главное меню\Программы
    и в
    C:\Documents and Settings\All Users\Main Menu\Programms
     
    Во всяком случае обратное - я точно видел (когда английские программы устанавливали не в "Главное меню\Программы", а в "Main Menu\Programms")...
     

    Это хоть и самое простое решение, но оно пожалуй и самое не эстетичное.
    Я до такого не опущусь.
    Т.ч. мой вопрос открыт, как распознать язык винды, и запихнуть в нужное место папку с ярлыками.
     
    Добавлено:
    mugil_cephalus

    Цитата:
    %ALLUSERSPROFILE%\Start Menu\Programs

    Спасибо конечно, но вопрос в том что этот вариант не пройдет если винда русской локализации.

    Всего записей: 40 | Зарегистр. 20-03-2006 | Отправлено: 15:56 17-01-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    chcp 1251
    if not exist "%ALLUSERSPROFILE%\Главное меню\Программы\nul" (
    chcp 866
    md "%ALLUSERSPROFILE%\Start Menu\Programs\yourfolder"
    )

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Black_Swan
    Проверьте наличие каждой из папок
    Цитата:
    C:\Documents and Settings\All Users\Главное меню\Программы  
    и в  
    C:\Documents and Settings\All Users\Main Menu\Programms  

    И проанализируйте ответ. Какая папка будет существовать, в ту и добавляйте.

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 16:02 17-01-2010
    BorlandIMHO

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    takt03
    Либо логин/пароль неправильно указан в скрипте, либо после него лишний пробел/табулятор. Открой ftpscript.tmp и проверь...
    Скрипт прямо из браузера скопирован? Убивай пробелы в конце каждой строки...
     
    Извиняюсь за предыдущую сырую "поделку" - for /r сработал не так, как ожидалось.
    Исправленный вариант (работоспособность проверена загрузкой лабуды на ftp.narod.ru - квипа у меня нет и не будет)
    Код:
    @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 (
    dir /B /S /A:D "%%~dpnxA"|find /I "history">%~dp0dlist.tmp  
    for /f %%B in (%~dp0dlist.tmp) 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 /A:-D "%%~dpnxB"') do (
    echo put "%%~nxC">>%~dp0ftpscript.tmp
    )
    )
    del %~dp0dlist.tmp
    )
    echo by>>%~dp0ftpscript.tmp
    ftp /s:%~dp0ftpscript.tmp
    exit

    пришлось вводить доп. временный файл...
    Побочный эффект: содержимое папок *History* (по маске) и всех подпапок этих папок копируются в один каталог на ftp. Т.е. если в глубине профиля лежит папка "History1" - её содержимое тоже попадёт в папку с именем профиля.
    В принципе, "побочный эффект" можно обойти, но программа усложнится на порядок...
    Проще считать, что в каждом профиле квипа всего одна папка "History".
    Если это не так - напишите, будем думать дальше.
    wolf0425

    Цитата:
     вот копирование только файлов из папок истории, проверяй

    ваш вариант копирует содержимое ВСЕХ подпапок заданной корневой QIPUSERFOLDER. Без разбору...

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

    Всего записей: 2398 | Зарегистр. 12-10-2006 | Отправлено: 16:07 17-01-2010 | Исправлено: BorlandIMHO, 16:12 17-01-2010
    Black_Swan



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

    Цитата:
    chcp 1251
    if not exist "%ALLUSERSPROFILE%\Главное меню\Программы\nul" (
    chcp 866
    md "%ALLUSERSPROFILE%\Start Menu\Programs\yourfolder"
    )

    Спасибо, то что доктор прописал!
    Осталось только размножить и переделать еще и с учетом варианта под Висту/7.

    Всего записей: 40 | Зарегистр. 20-03-2006 | Отправлено: 16:18 17-01-2010
    mugil_cephalus

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

    Цитата:
    Т.ч. мой вопрос открыт, как распознать язык винды,

    X:\>ver
     
    Microsoft Windows XP [Версия 5.1.2600]
     
    в eng кириллицы не будет

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Тема!
    Путем сравнения по последним символам получим язык. СПС!

    Всего записей: 40 | Зарегистр. 20-03-2006 | Отправлено: 16:22 17-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
      Извиняюсь. После чательной проверки и небольшой коррекции всё заработало Спасибо!
    BorlandIMHO тоже ОГРОМНОЕ СПАСИБО! Теперь буду читать книгу и подробней изучать, уже написанный вами код.  

    Всего записей: 17 | Зарегистр. 16-01-2010 | Отправлено: 16:25 17-01-2010 | Исправлено: takt03, 17:55 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