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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    KapralBel



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

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:58 04-06-2008
    JI063uk



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

    День добрый. У меня такой вопрос
     
    @echo off
    net user network /passwordreq:no /active:yes /workstations:* /add
    net localgroup Администраторы network /add
     
    первая строчка работает нормально создает юзера, а вторая не хочет давать ему права админа говорит что «Указанная локальная группа не существует» подскажите как справиться с этим?
     

    Всего записей: 55 | Зарегистр. 24-01-2008 | Отправлено: 11:38 04-06-2008
    Ang



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    JI063uk
    А название группы "Администраторы" в батнике ты пишешь в досовской кодировке?

    Всего записей: 251 | Зарегистр. 25-07-2001 | Отправлено: 12:24 04-06-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JI063uk
     
    A что показывает net localgroup
    Если батник в кодировке windows-1251, то конечно  такой группы нет: "Ђ¤¬Ё-Ёбва в®ал"  
     
     
     
    Добавлено:
    Ang
    ;-)

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:27 04-06-2008
    denixxbaykin

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

    Цитата:
    Не подскажете, как можно проверить работает ли кто в расшаренной папке?

    Ты хочешь посмотреть, кто пользуется твоими шарами? Или как? В винде есть средство, которое отображает список открытых файлов... через консоль управления... Win+R, compmgmt.msc, Общие папки - Открытые файлы... Или тебе не это надо?
     
    Добавлено:
    Подскажите, знающие люди, чем можно отчикать начало строки в N-ное количество символов в каждой строчке результата выполнения команды dir /a /b /s .\somefolder\

    Всего записей: 36 | Зарегистр. 04-06-2008 | Отправлено: 13:00 04-06-2008
    utf

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    denixxbaykin
     
    Спасибо за внимание.
    Да, я хочу узнать висит ли кто в шаре, но средствами bat файла.

    Всего записей: 3 | Зарегистр. 03-03-2007 | Отправлено: 14:34 04-06-2008
    JI063uk



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    @echo off
    chcp 1251 >nul
    net user network /passwordreq:no /active:yes /workstations:* /add
    net localgroup Администраторы network /add
     
    СПАСИБО

    Всего записей: 55 | Зарегистр. 24-01-2008 | Отправлено: 14:36 04-06-2008
    denixxbaykin

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

    Цитата:
    но средствами bat файла

    ну тогда net file, как уже и советовали тут выше...

    Всего записей: 36 | Зарегистр. 04-06-2008 | Отправлено: 14:50 04-06-2008
    king_stiven

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

    Код:
    @echo off
    for /f "tokens=*" %%d in ('dir "P2" /b') do move "P2\%%d" "P1"


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

    Попробуй сам.
     

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 15:13 04-06-2008
    denixxbaykin

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    К сожалению, если move видит, что такие подпапки в PP1 уже существуют, то он пишет "Отказано в доступе", и всё, ничего я больше от него не получу... а надо иерархию одной папки "наложить" на иерархию другой. Короче, сейчас... )

    Всего записей: 36 | Зарегистр. 04-06-2008 | Отправлено: 15:55 04-06-2008
    king_stiven

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

    Код:
    @echo off
    :begin
    set /a sum+=1
    if /i "%~d0\" neq "%cd%" (
        cd ..
        goto begin
    )
    set /a sum+=1
    setlocal enabledelayedexpansion
    set blok=!sum!
    setlocal DISABLEDELAYEDEXPANSION
    cd %~dp0
    for /f "usebackq tokens=*" %%d in (`dir "P2" /b /s /a:-d`) do (
        for /f "tokens=%blok%* delims=\" %%e in ("%%~dpd") do (
            md "P1\%%f"
            move "%%d" "P1\%%f"
        )
    )

    Опять же в случае совпадения имён файлов(не папок) доработай. Пустые папки не перемещаются, потом удали P2.

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 17:35 04-06-2008
    denixxbaykin

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    ухххх. Спасибо большое, сейчас буду сидеть, разбирать по косточкам это произведение логической мысли...

    Всего записей: 36 | Зарегистр. 04-06-2008 | Отправлено: 17:46 04-06-2008
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    граждане помогите плиз разобрать папку с файлами, чтобы отправить каждый с нужными параметрами на фтп
     
    есть батник котрый запускается по евентам фтп сервера C:\PROGRA~1\CesarFTP\
    в нем куча логинов, люди кладут под своми логинами, в свои папки, файлы xml или архивы с xml , далее архивы  распаковываются и уже xml выкладываются на другой фтп с аналогичной структурой папок и после этого загружаются в систему, все это логируется.

    Код:
    @Echo off
    REM %1 - FILEDIR  
    REM %2 - FILENAME  
    REM %3 - USERNAME
    REM %4 - FILEEXT
     
    set t=%time: =0%
    set s=%t:,=%
    set s1=%s::=%
    set s2=%s1::=%
    set d=KONscr%s2%
     
    set d1=%date:~-4%%date:~3,2%%date:~0,2%
    set l=D:\FTP\KONTRAGENTY\log\%d1%_%s1%.log
     
    echo %1>%l%
    echo %2>>%l%
    echo %3>>%l%
    echo %4>>%l%
     
    rem if -%4==- goto parmis4
    if -%3==- goto parmis3
    if -%2==- goto parmis2
    if -%1==- goto parmis1
     
    SET q=%1
    set q1=%q:~6%
    set q2=%q1:\=/%/VHODYASCHIE
    set q3=/usr/IS-U%q2%
     
    if /I %4- NEQ RAR- goto xml
     
    echo Found RAR>>%l%
    UnRAR.exe t %1\%2 >>%l%
    if errorlevel 1 goto end
     
    mkdir %1\%s2%
    UnRAR.exe e -o- -p- -y %1\%2 %1\%s2%
    if errorlevel 1 goto end
     
     
    UnRAR.exe lb %1\%2 >>%l%
     
    echo user>%d%
    echo ripa_uo sap>>%d%
    echo cd %q2%>>%d%
    for %%p in (%1\%s2%\*.xml) do echo put %%p>>%d%  
    echo bye>>%d%  
     
    ftp -n -s:%d% 10.18.26.32>>%l%
     
    del %1\%2>>%l%
    del %d%>>%l%
     
    for %%p in (%1\%s2%\*.xml) do C:\PROGRA~1\CesarFTP\TestConsoleRFC.exe %3 %q3% %%~nxp >>%l%
     
    rmdir /S /Q %1\%s2%
     
    goto end
     
     
    :xml
    if /I %4- NEQ XML- goto zip
    echo Found XML! >>%l%
     
    echo user>%d%
    echo ripa_uo sap>>%d%
    echo cd %q2%>>%d%
    echo put %1\%2>>%d%  
    echo bye>>%d%  
     
    if not exist %1\%2 goto fmis
     
    ftp -n -s:%d% 10.18.26.32>>%l%
     
    del %1\%2
    del %d%
     
    C:\PROGRA~1\CesarFTP\TestConsoleRFC.exe %3 %q3% %2 >>%l%
     
    goto end
     
    :zip
    if /I %4- NEQ ZIP- goto UnnForm
    echo Found ZIP!>>%l%
     
    7za.exe t -bd %1\%2 >>%l%
    if errorlevel 1 goto end
     
    mkdir %1\%s2%
    7za.exe e -aoa -y -bd %1\%2 -o%1\%s2%
    if errorlevel 1 goto end
    7za.exe l -bd %1\%2 >>%l%
     
    echo user>%d%
    echo ripa_uo sap>>%d%
    echo cd %q2%>>%d%
    for %%p in (%1\%s2%\*.xml) do echo put %%p>>%d%  
    echo bye>>%d%  
     
    ftp -n -s:%d% 10.18.26.32>>%l%
     
    del %1\%2>>%l%
    del %d%>>%l%
     
    for %%p in (%1\%s2%\*.xml) do C:\PROGRA~1\CesarFTP\TestConsoleRFC.exe %3 %q3% %%~nxp >>%l%
     
    rmdir /S /Q %1\%s2%
     
    goto end
     
    :UnnForm
    echo ERROR: Unknown File Format!>> %l%
    goto end
     
    :parmis1
    Echo Error: Parameter "filedir" missing!>>%l%
    goto end
    :parmis2
    Echo Error: Parameter "filename" missing!>>%l%
    goto end
    :parmis3
    Echo Error: Parameter "username" missing!>>%l%
    goto end
    :parmis4
    Echo Error: Parameter "fileext" missing!>>%l%
    goto end
     
     
    :fmis
    Echo Error: File %1\%2 does not exist! >>%l%
    del %d%
    goto end
     
    :end

    нужно сделать еще один батник который будет разбирать папку с такими же xml и класть на этот фтп C:\PROGRA~1\CesarFTP\ в соответствии тех же логинов людей.  
    файлы следующего вида
    80020_9123456780_20080427_990.xml
    80020_8123456770_20080502_710.xml
    файл соответствия такого вида:
    1.csv

    Код:
    9123456780;User1
    8123456770;User2
     
    .....................................

     
    логин и пароль один и тот же.

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 18:04 04-06-2008 | Исправлено: JohnRD, 22:21 04-06-2008
    denixxbaykin

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ещё один дурацкий вопрос

    Код:
    set i=10
    set hexstring=0123456789abcdef
     
    echo i=%i%
    echo %hexstring:~%%i%%,1%

     
    по идее должно извлекать букву a из строки hexstring, но получается вот что:

    Код:
    G:\>111.bat
    G:\>set i=10
    G:\>set hexstring=0123456789abcdef
    G:\>echo i=10
    i=10
    G:\>echo 0123456789abcdef10
    0123456789abcdef10

     
    Вот такое вот несчастье. Как бы его заставить делать нужное?
     
    Добавлено:
    О! Нашёл )

    Код:
    set i=10
    set hexstring=0123456789abcdef
     
    echo i=%i%
    setlocal enabledelayedexpansion
    echo !hexstring:~%i%,1!
    setlocal disabledelayedexpansion

     

    Код:
    G:\>set i=10
     
    G:\>set hexstring=0123456789abcdef
     
    G:\>echo i=10
    i=10
     
    G:\>echo !hexstring:~10,1!
    a
     

    Всего записей: 36 | Зарегистр. 04-06-2008 | Отправлено: 18:13 04-06-2008
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите пожалуйста подкрутить

    Код:
    @Echo off  
     
    set t=%time: =0%  
    set s=%t:,=%  
    set s1=%s::=%  
    set s2=%s1::=%  
    set d=KONscr%s2%  
     
    set d1=%date:~-4%%date:~3,2%%date:~0,2%  
    set l=d:\log\%d1%_%s1%.log  
     
    for %%p in (d:\in\*.xml) do set уникальную часть имени файла = %%r
    for /f "tokens=1,2 delims=; " %%b in (1.csv) do if %%b==%%r set %%c=login
    set passw=%login%
     
    echo user>%d%  
    echo %login% %passw%>>%d%  
    echo put %p%>>%d%  
    echo bye>>%d%  
     
    ftp -n -s:%d% 192.168.60.30>>%l%  
     
    del %d%  
    goto end  
     
     
    :end

     
    файлы следующего вида  
    80020_9123456780_20080427_990.xml  
    80020_8123456770_20080502_710.xml  
    уникальная часть имени файла это 2я часть после подчерка это есть ИНН
     
    файл соответствия такого вида:  

    Код:
    9123456780;User1  
    8123456770;User2

     
    как взять эту уникальную часть имени?
    благодарен за ранее

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 21:59 04-06-2008 | Исправлено: JohnRD, 22:19 04-06-2008
    01MDM



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

    Код:
     
     
    for %%p in (d:\in\*.xml) do (
         for /f "tokens=2 delims=_" %%i in ("%%p") do echo что-то делаешь с %%i
    )
     
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:34 04-06-2008
    JohnRD

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

    Код:
    for %%p in (D:\install\GetMail\22\*.xml) do (
         for /f "tokens=2 delims=_" %%i in ("%%p") do set %%i=inn
    )
    for /f "tokens=1,2 delims=; " %%b in (1.csv) do if %%b==%inn% set %%c=login
    set passw=%login%

     
     

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 07:44 05-06-2008
    king_stiven

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

    Код:
    for %%p in (D:\install\GetMail\22\*.xml) do (
         for /f "tokens=2 delims=_" %%i in ("%%p") do (
             for /f "tokens=1,2 delims=; " %%b in (1.csv) do if "%%b"=="%%i" set passw=%%c
         )
    )

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 08:36 05-06-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnRD
    Тебе лучше сразу обрабатывать полученную переменную

    Код:
     
    for %%p in (D:\install\GetMail\22\*.xml) do (
         for /f "tokens=2 delims=_" %%i in ("%%p") do call:inn %%i
    )
    goto:eof
     
    :inn
    for /f "tokens=1,2 delims=; " %%b in (1.csv) do if %%b==%1 set login=%%c
    set passw=%login%
     

     
    Не проверял, но вроде должно работать
     
    Или как указал выше king_stiven. Тоже самое, но без выноса.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:39 05-06-2008 | Исправлено: 01MDM, 08:43 05-06-2008
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    01MDM
     
    спасибо буду разбираться..щас
     
     
    Добавлено:
    king_stiven
    01MDM
    скажите почему не отдает %p%
    и только 1 раз отдает логин хотя файлов 11

    Код:
    @echo off
    for %%p in (E:\install\GetMail\22\*.xml) do (
        for /f "tokens=2 delims=_" %%i in ("%%p") do (
           for /f "tokens=1,2 delims=; " %%b in (1.csv) do if "%%b"=="%%i" set login=%%c
        )
    )
    echo %login%
    echo %p%
     
     

    Код:
    E:\install\GetMail>7.cmd
    blabla
    ECHO is off.

     
    этот тоже не отдает %p%
    но отдает 11 раз логин

    Код:
    @echo off
    for %%p in (E:\install\GetMail\22\*.xml) do (
         for /f "tokens=2 delims=_" %%i in ("%%p") do call:inn %%i
    )
    goto:eof
     
    :inn
    for /f "tokens=1,2 delims=; " %%b in (1.csv) do if %%b==%1 set login=%%c
    set passw=%login%
    echo %login%
    echo %passw%
    echo %p%


    Код:
    E:\install\GetMail>8.cmd
    blabla
    ECHO is off.
    blabla
    ECHO is off.
    blabla
    ECHO is off.
    blabla
    ECHO is off.
    blabla
    ECHO is off.
    blabla
    ECHO is off.
    blabla
    ECHO is off.
    blabla
    ECHO is off.
    blabla
    ECHO is off.
    blabla
    ECHO is off.
    blabla
    ECHO is off.

     
    мне нужно вложить %p% в файл конекта к серверу FTP  
    KONscr12404966

    Код:
     
    user            
    blabla          
    blabla            
    put          
    сюда по идее должны прописаться файлы для загрузки    
    bye
               
     
    как это сделать?

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 09:11 05-06-2008 | Исправлено: JohnRD, 14:06 05-06-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru