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

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

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

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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    igor_andreev

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

    Код:
    cabarc -o x my.cab * "%temp%"\

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 10:01 19-05-2011
    pfr



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброго времени суток.
    Подскажите, можно-ли как-нибудь реализовать данную задачу:
    есть файл следующего содержания

    Цитата:
    del "%USERPROFILE%\Рабочий стол\имя.lnk"
    copy "\\ххх\новое_имя.lnk" "%USERPROFILE%\Рабочий стол\"

    для удаления с рабочего стола старого ярлыка и создания нового.
    Так вот в чём загвоздка - при запуске этого файла локально, всё выполняется нормально.
    Но мне надо распространить этот файл на много рабочих станций (WinXP) посредством Kaspersky Admin Kit.
    Но при выполнении через AdminKit этот файл запускается под учёткой LocalService, в результате %USERPROFILE%\Рабочий стол\ указывает на несуществующий путь c:\Documents and Settings\LocalService\Рабочий стол\.
    Можно ли как-то реализовать в батнике смену пользователя, от имени которого запускается файл или ещё как-нибудь обойти данные "грабли" ?
     


    ----------
    ... надышаться можно только ветром ...

    Всего записей: 627 | Зарегистр. 16-12-2003 | Отправлено: 13:03 19-05-2011 | Исправлено: pfr, 13:08 19-05-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Да уж... хитро. Спасибо)

    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 13:20 19-05-2011
    Elroir



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

    Цитата:
    Можно ли как-то реализовать в батнике смену пользователя, от имени которого запускается файл или ещё как-нибудь обойти данные "грабли" ?  

     
    Как вариант - можно пройтись по всем папкам "Рабочий стол" и, если там есть файл "имя.lnk" - выполнить замену.
     

    Код:
     
    @echo off
    setlocal ENABLEDELAYEDEXPANSION
    call :setUsername "%userprofile%
    set "usersPath=!!userprofile:\%username%=!!"
    for /f "tokens=*" %%a in ('dir /ad /b "%usersPath%"') do (
      if exist "%usersPath%\%%a\Desktop\name.lnk" (
        del /q "!usersPath!\%%a\Desktop\name.lnk"
        copy "\\xxx\new_name" "%usersPath%\%%a\Desktop\"  
      )
    )
    goto :EOF
    :setUsername
    set "username=%~n1"
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:40 19-05-2011
    pfr



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Elroir
    спасибо, но код что-то не работает ...

    ----------
    ... надышаться можно только ветром ...

    Всего записей: 627 | Зарегистр. 16-12-2003 | Отправлено: 11:33 20-05-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    pfr
    Не работает, видимо, из-за того что винда русская, а скрипт расчитан на английскую.
    Замени везде Desktop на Рабочий стол.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:07 20-05-2011
    Elroir



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

    Цитата:
    спасибо, но код что-то не работает ..

    res2001 прав - в коде надо заменить названия на те, которые тебе нужны:

    Код:
     
    if exist "%usersPath%\%%a\Desktop\name.lnk" (  
        del /q "!usersPath!\%%a\Desktop\name.lnk"  
        copy "\\xxx\new_name" "%usersPath%\%%a\Desktop\"  
      )  
     

    Desкtop -> Рабочий стол
    name.lnk -> название файла на рабочем столе, который надо заменить
    xxx\new_name -> путь и название нового файла

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:48 20-05-2011
    1nasty1



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите, как сделать bat файл, который самоуничтожится после выполнения? без возможности восстановления (опционально).

    Всего записей: 751 | Зарегистр. 11-03-2005 | Отправлено: 19:33 20-05-2011
    01MDM



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

    Код:
     
    @echo off
     
    echo revenge and ...
    echo ... suicide
     
    1>nul ping -n 4 localhost  
     
    1>"%temp%\qwerty.cmd" (
     
        echo cd.^>"%~f0"
        echo del "%~f0"
        echo del "%%~f0"
     
    )
     
    cmd /c "%temp%\qwerty"
     



    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:09 20-05-2011
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 23:28 20-05-2011 | Исправлено: king_stiven, 14:50 21-05-2011
    HA3APET

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Нужен bat файл запускающий программу, если программа не запущена.
    Другими словами, что бы при запуске bat файла указанная программа не запускалась, если она уже запущена)
    Есть у кого какие идеи?

    Всего записей: 314 | Зарегистр. 28-01-2009 | Отправлено: 00:06 21-05-2011 | Исправлено: HA3APET, 00:15 21-05-2011
    zikol

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

    Код:
     
    @echo off
    tasklist >c:\Proba.VqG
    find /i "calc.exe"<c:\Proba.VqG>nul
    if not errorlevel 1 goto ProbaaoAO
    start calc.exe
    :ProbaaoAO
    del c:\Proba.VqG
     

    Всего записей: 645 | Зарегистр. 13-02-2011 | Отправлено: 01:40 21-05-2011 | Исправлено: zikol, 01:42 21-05-2011
    HA3APET

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    zikol
    Спасибо, работает!

    Всего записей: 314 | Зарегистр. 28-01-2009 | Отправлено: 03:03 21-05-2011
    Free_Soft



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

    Код:
    tasklist /fi "imagename eq calc.exe" 2>nul | find /i /n "calc.exe" >nul || start calc.exe


    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 12:58 21-05-2011
    HA3APET

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Free_Soft
    Спасибо, как раз хотел это попросить)

    Всего записей: 314 | Зарегистр. 28-01-2009 | Отправлено: 18:23 21-05-2011
    oporgo

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Выполнение сценария останавливается на данной строке, что еще нужно дописать?  
     
    C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f

    Всего записей: 2 | Зарегистр. 21-12-2010 | Отправлено: 10:41 22-05-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    oporgo
    ну так у тебя и написано, чтобы консоль не закрывалась. С завершением будет так:
    Код:
    C:\Windows\System32\cmd.exe /с %windir%\System32\reg.exe...


    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 12:16 22-05-2011 | Исправлено: Free_Soft, 12:16 22-05-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а вообще, если редактирование реестра выполняется из bat файла, вполне достаточно только этого:
    Код:
    REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f


    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 14:35 22-05-2011
    zherebcov

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    set /p n="Введите N"
    :restart2
    cls
    @echo Вы ввели %n%.
     
    ******* - много всякого, что выполняется.
     
    @echo  конечный результат >> bat.bat
    FOR /L %%G IN (1,1,%n%) DO goto :restart2
    start bat.bat
     
    Такой батник
    Вопрос: как сделать чтобы цикл после получения значения n позволил продолжить работу батника?
     
    Суть в  том что в этом батнике содержится несколько запросов которые нужно выполнить n раз.
    Я четко осознаю что сейчас написано белиберда с циклом, ибо программа должна реализовываться в цикле а не до него. Подскажите.
    Вопрос2: почему значение %G - невозможно использовать вне цикла? т.е. допустим каждый раз при зацикливании выводилось, аля: @echo Cейчас идет %G цикл.

    Всего записей: 3 | Зарегистр. 22-05-2011 | Отправлено: 17:44 22-05-2011
    01MDM



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

    Цитата:
    как сделать чтобы цикл после получения значения n позволил продолжить работу батника?  


    Код:
     
    @echo off
    setlocal
     
    set /p n="Введите N"
    echo Вы ввели %n%.
     
    FOR /L %%G IN (1,1,%n%) DO (
     
      ******* - много всякого, что выполняется.
      echo  конечный результат >> bat.bat
     
    )
     
    start bat.bat  
     

     
     
     


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:20 22-05-2011
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru