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

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



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужен фильтр замены текста с регулярными выражениями
    например:

    Код:
    type 1.txt | sort | replace "01" "1" > 2.txt

    Всего записей: 30 | Зарегистр. 28-03-2008 | Отправлено: 16:14 15-12-2008
    Elroir



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

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:29 15-12-2008
    zzxx1488

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    день добрый,
    всегда выручаете спасибо на том
    такой вопрос, нужно получить рандомный ип из заданного диапазона
    192.168.15.%%i  %%i= 1-255
    пытаюсь так:  for /l %%a in (1,1,255) do echo 192.168.1.%%a  
    но таким образом просто перечисляются от 1 до 255 ВСЕ цифры, а мне нужно чтобы просто ОДНА рандомная из 1-255 вывелась
     
     
    и еще одна рандомизация, нужно получить 6 цифр вместе с определенными буквами, типа
    rr=1d8eff  (set rr=%%i)
    буквы которые могут быть с цифрами: abcdef и числа 0-9

    Всего записей: 62 | Зарегистр. 04-10-2008 | Отправлено: 16:32 15-12-2008
    01MDM



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

    Код:
     
    @echo off
    setlocal
     
    for /l %%i in (1,1,255) do call:1 %%i
    for /f "tokens=2 delims==" %%i in ('set rand_') do set value=%%i
    echo 192.168.0.%value%
    goto:eof
     
    :1
    set rand_%random%%random%=%1
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:56 15-12-2008
    Elroir



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

    Цитата:
    и еще одна рандомизация, нужно получить 6 цифр вместе с определенными буквами, типа  
    rr=1d8eff  (set rr=%%i)  
    буквы которые могут быть с цифрами: abcdef и числа 0-9

     

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    set "rr="
    set "10=a" & set "11=b" & set "12=c"
    set "13=d" & set "14=e" & set "15=f"
    for /l %%a in (1,1,6) do call :addDigit
    echo %rr%
    goto :EOF
     
    :addDigit
    set /a "rand=%random% %% 16"
    if %rand% GTR 9 (set rand=!%rand%!)
    set "rr=%rr%%rand%"
     


    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:38 15-12-2008
    sL4yer



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет, помогите решить следующую задачу:
    Есть папка (например files) в которой находятся файлы (например *.txt и *.log) нам надо создать в папке files новую папку (названием служит сегодняшняя дата) и переместить эти файлы в нее (в ту что название - дата) если такая папка уже существует, то создает в этой папке (в тей что название дата) новую папку под названием 1 и перемещает все файлы из папки files туда, если папка 1 уже существует, то создает папку 2 и перемещает все файлы из папки files туда и так по наростающей (если папка 2 существует создает 3) это длится до 9, папку с именем 10 уже не создает а выбивает ошибку. Зарание благодарен.

    Всего записей: 49 | Зарегистр. 22-10-2008 | Отправлено: 20:44 15-12-2008 | Исправлено: sL4yer, 21:36 15-12-2008
    Nagual



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

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 03:38 17-12-2008
    GreaseOD

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет. Помогите плиз организовать скрипт, который из файла читает список айпишников, подставляет первый айпишник в переменную, пингует, если ошибка то пишет в свой лог об ошибке и начинает читать следующий айпи по списку, Если пинг удачный подключается и копирует файл, если файл не существует то опять пиешет в свой лог и переходит к др компу, Если файл есть то открывает его и проверяет на определенные фразы (постоянные) внутри файла, если находит фразу то пишет в свой лог и переходит к след.  
     
    У меня проблема в том, что когда я задаю цикл FOR и открываю скобку DO (, затем указываю что делать в цикле и кучу меток - цикл обрывается и выполняется только для одного компьютера.
     
    Файл Cashlist.txt
    192.168.0.2
    192.168.0.3  
    192.168.0.4
    192.168.0.5
     
    итд
     
    Вобщем из скрипта будет понятнее:
     
    @echo on
     
    IF EXIST Report.log  DEL Report.log /q
    @echo Start>Report.log
    SET dtx=%date:~0,10%
     
    FOR /F %%i IN (Cashlist.txt) DO (  
     
    ping -n 1 %%i  
    IF ERRORLEVEL 1 GOTO ping
     
    net use \\%%i\ipc$ /user:administrator пароль)
     
    IF NOT EXIST \\%%i\c$\temp\standalone\outbound\*DMC.txt GOTO file
    copy \\%%i\c$\temp\standalone\outbound\*DMC.txt %temp%.\
     
    ping -n 5 %%i
     
     
    grep -q "No Resource ZIP files found in Inbound ZIP directory" %temp%.\*DMC.TXT>tmpstand.txt
    findstr %dtx% tmpstand.txt
    IF ERRORLEVEL==1 GOTO Doesn1
    IF ERRORLEVEL==0 SET L1=No Resource ZIP files    
    GOTO Record
     
    oesn1
    grep -q "Finished with success" %temp%.\*DMC.TXT>tmpstand.txt
    findstr %dtx% tmpstand.txt
    IF ERRORLEVEL==1 GOTO Doesn2  
    IF ERRORLEVEL==0 SET L1=Ok  
    GOTO Record
     
    oesn2
    grep -q "The user aborted the request" %temp%.\*DMC.TXT>tmpstand.txt
    findstr %dtx% tmpstand.txt
    IF ERRORLEVEL==1 GOTO Doesn3
    IF ERRORLEVEL==0 SET L1=Bad archive
    GOTO Record
     
    oesn3
    grep -q "Checking finished with errors" %temp%.\*DMC.TXT>tmpstand.txt
    findstr %dtx% tmpstand.txt
    IF ERRORLEVEL==1 GOTO Doesn4
    IF ERRORLEVEL==0 SET L1=Database Suspect
    GOTO Record
     
    oesn4
    SET L1=Another
    GOTO Record
     
     
    ing  
    SET L1="Can't connect"  
    @echo %L1%>>Report.log
    GOTO end
     
    :File
    SET L1="File doesn't exist"  
    @echo %L1%>>Report.log
    GOTO end
     
     
    :Record
    echo %L1% >> Report.log  
     
    :end
     
    )

    Всего записей: 30 | Зарегистр. 10-08-2006 | Отправлено: 10:52 17-12-2008
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как можно с помощью батника сделать комп не видимым в сети? гдето попадалось - все перерыл не могу найти....Кто в курсе подскажите...
     
    Добавлено:
    все решил....

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 10:53 17-12-2008
    Elroir



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

    Цитата:
    все решил....

    Поделись решением

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 11:38 17-12-2008
    igor_andreev

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

    Цитата:
    Поделись решением

    net config server /hidden:yes

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 12:47 17-12-2008
    stanzdor81



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста - можно ли с помощью ntbackup копировать папку не целиком, а исключать файлы по типу, например *.avi и т.п.
    Сейчас используется такой батник, но архив получается слишком большим...
    Подробнее...

    Всего записей: 175 | Зарегистр. 24-02-2007 | Отправлено: 13:29 17-12-2008
    VSVSVSVS

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, помогите пожалуйста, надо создать батник который делает backup_ddmmyyyy, и в итоге будет сохраняться ротация в 20 дней т.е. на двадцать первый день будет затираться старый по дате архив, архив я делаю в WinRAR а вот с for не могу разобраться как мне объявить дату. Вот до чего я дошел дальше здвинуться не могу, кто поможет, подскажет буду благодарен!    
     
    cd c:\Program Files\WinRAR  
    DATE /t >%D_Date%  
    set %filename="backup foto_"%D_Date%.rar  
    for %filename in ??????? do del  %filename%  
    rar a -ag[%D_Date%] d:\Backup\"backup foto_" d:\foto  
     
     

    Всего записей: 4 | Зарегистр. 17-12-2008 | Отправлено: 14:47 17-12-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VSVSVSVS
    тырк вместо skip=8 напиши skip=20

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 15:01 17-12-2008
    real_LEM



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    VSVSVSVS, я бы сделал так:

    Код:
    SET Source_backup="d:\foto"
    SET Back_up_path="d:\Backup\backup foto_"
    rar a %Back_up_path% %Source_backup% -r -ag"YYYY_mm_dd" -dh

    rar.exe положи в папку системы \WINDOWS\SYSTEM32
     
    Формат даты рекомендую именно такой - проще будет находить/сортировать архивы по дате.
     
    Если рекурсия по подпапкам не нужна, то ключ -r можно убрать.

    Всего записей: 461 | Зарегистр. 11-09-2002 | Отправлено: 15:12 17-12-2008
    VSVSVSVS

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    real_LEM а старые архивы затираться будут
     
     
    Добавлено:
    igor_andreev
    что такое DELIMS и переменные не как не объявляются можешь чуть разъяснить эту строчку вот real_LEM написал понятно все работает только ротация не делается
     
     
     

    Код:
     
    FOR /F "SKIP=20 DELIMS=" %%A IN ('DIR /O:-D /A:-D /B "d:\backup\backup foto_*.rar" 2^>NUL') DO DEL "d:\backup\%%A">NUL 2>&1

     
    Добавлено:
    igor_andreev
    real_LEM
    ВСЕМ ВАМ ОГРОМНОЕ СПАСИБО СОВМЕСТИВ ПОЛУЧИЛОСЬ ВСЕ ПУТЕМ. ОЧЕНЬ БЛАГОДАРЕН!

    Всего записей: 4 | Зарегистр. 17-12-2008 | Отправлено: 15:27 17-12-2008
    real_LEM



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    VSVSVSVS, ротацию архивов я делаю через... подпапки , суть такая:

    Код:
    SET Source_backup="d:\foto"  
    SET Back_up_path="d:\Backup\backup foto_"  
    REM Удаляем самый древний
    del d:\backup\19\*.* /Q
    REM Сдвигаем архивы по их давности
    move /Y d:\backup\18\*.* d:\backup\19
    move /Y d:\backup\17\*.* d:\backup\18
    move /Y d:\backup\16\*.* d:\backup\17
    ...
    move /Y d:\backup\2\*.* d:\backup\3
    move /Y d:\backup\1\*.* d:\backup\2
    move /Y d:\backup\*.rar d:\backup\1
    rar a %Back_up_path% %Source_backup% -r -ag"YYYY_mm_dd" -dh

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

    Всего записей: 461 | Зарегистр. 11-09-2002 | Отправлено: 16:37 17-12-2008
    stepanovig



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый вечер
    У меня следующая проблема.
    Есть код:
     
    for /f "tokens=*" %%i in ('more^<a.txt') do call :aaa %%i
    goto eof
     
    :aaa
    set a=%*
    echo %a%
    set a=%a:AAAAA=%
    echo %a% >>a2.txt
    goto eof
     
    :eof
     
    Беда в том, что при выполнении echo %a%>>acl2.txt он автоматом подставляет пробел и 1 ( echo ..... 1>>a2.txt). Из-за этого в новом файле появляются пробелы в конце каждой строки. Что делать? Если убрать пробел между  %a% и >>a2.txt (%a%>>a2.txt), то возникает другая проблема. В файле есть строчка "...... = 0",которую он не правильно обрабатывает и получается в итоге неразбериха (...... = 0>>a2.txt)

    Всего записей: 2 | Зарегистр. 17-12-2008 | Отправлено: 17:33 17-12-2008
    gilyo



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрій вечер!!
     
    Есть проблемс.
     
    есть батник
    %systemroot%\SYSTEM32\net use m: \\D_ser\SCR$
    %systemroot%\SYSTEM32\net use f: \\D_ser\SEP$
    %systemroot%\SYSTEM32\net use n: \\D_ser\STAT$
     
    Но все кто логинится видит эти шары!!
    А как зделать чтобы для опеределенных логинов или груп видавать разные шары ???

    Всего записей: 2 | Зарегистр. 17-12-2008 | Отправлено: 17:51 17-12-2008
    tuwkan

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте всем! ) Я вот только только начал разбираться с bat файлами, не могли бы подсказать? Что то никак не соображу как сделать, а на форумах пока что не нашел.
        Мне нужно написать батник который будет пинговать машину (например 192.168.0.1), и в случае если пинга нет должна запускаться программа (например NMNE). А вот если потом после того как уже программа пущенна пинг таки появится, надо эту программу закрыть. Надо еще чтобы это функционировало круглосуточно... Как это сделать лучше через планировщик или как? Запутался немного если чесно ) Заранее спасибо ) Может кто подскажет в какую сторону думать или покажет примерчик.

    Всего записей: 2 | Зарегистр. 17-12-2008 | Отправлено: 19:52 17-12-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 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