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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Black_Swan
     
    chcp 1251>nul &ver|find /i "е">nul 2>&1 &&1>con (echo Rus) ||1>con (echo Eng)
     
    Добавлено:
    takt03

    Цитата:
    В фоновом режиме (без отобржения процесса)  

    прога cmdow - http://www.commandline.co.uk/cmdow/
    консольное окно мигнет и "уйдет" в background
    прога hstart - http://www.ntwind.com/software/utilities/hstart.html
    консольное окно даже не мигнет

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



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

    Цитата:
    ваш вариант копирует содержимое ВСЕХ подпапок заданной корневой QIPUSERFOLDER. Без разбору...
    да, history потерялась, поправил.

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    полдня сидел, но задачу "History to ftp" всё-таки решил!
    Причём (на мой взгляд) довольно красиво: скрипт рекурсивно обходит всё дерево начиная с заданной папки, если в дереве есть папка "History" - она копируется вместе со всеми вложенными папками и файлами на сервер с соблюдением структуры и относительного пути. Ветки, не содержащие папки "History", игнорируются.

    Код:
    @echo off
    chcp 1251
     
    set FTPSERVER=somthere.in.the.net
    set FTPUSER=ftpusername
    set FTPPASSWORD=ftpuserpassword
    set "FTPFOLDER=/incoming/дальше идёт моя папка"
    set "LOCALFOLDER=c:\Program Files\QIP\Users\"
    1>"%~dp0ftpscript.tmp" (
        echo open %FTPSERVER%
        echo %FTPUSER%
        echo %FTPPASSWORD%
        echo binary
        echo literal pasv
    )
    for /f "delims=" %%D in ('dir /a:d /b "%LOCALFOLDER%*"') do call :FLDCHK "%%~dpnxD" "/%%~nxD"
    1>>"%~dp0ftpscript.tmp" echo by
     
    ftp -s:"%~dp0ftpscript.tmp"
    del "%~dp0ftpscript.tmp"
     
    goto :EOF
     
     
    :FLDCPY
    1>>"%~dp0ftpscript.tmp" (
        echo mkdir "%FTPFOLDER%%~2"
        echo cd "%FTPFOLDER%%~2"
        echo lcd "%~dpnx1"
    )
    for /f "delims=" %%A in ('dir /B /A:-D "%~1"') do 1>>"%~dp0ftpscript.tmp" (
        echo put "%%~nxA"
    )
     
    for /f "delims=" %%B in ('dir /B /A:D "%~1"') do call :FLDCPY "%~1\%%~nxB" "%~2/%%~nxB"
     
    goto :EOF
     
     
    :FLDCHK
    pushd "%~1"
    for /f "delims=" %%E in ('dir /a:d /b *') do (
        if "%%~nxE" == "History" (call :FLDCPY "%%~dpnxE" "%~2/%%~nxE") else (call :FLDCHK "%%~dpnxE" "%~2/%%~nxE")
    )
    popd
    goto :EOF
     

    Попутно выяснил, что для правильной работы с русскими буквами в названиях файлов/папок в данном случае требуется скрипт сохранять в кодировке 1251 (ANSI), а не 866 (OEM).
    Данному скрипту, в отличие от варианта wolf0425, глубоко параллельна глубина вложения папки History относительно стартовой. Т.е. если в качестве LOCALFOLDER задать c:\ - будут скопированы все папки с названием History со всего диска (если, конечно, учётная запись от имени которой скрипт запущен обладает достаточными привилегиями).
     
    Заодно была решена задача рекурсивного копирования папок на ftp-сервер с сохраненнием структуры (для работы надо).

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

    Всего записей: 2660 | Зарегистр. 12-10-2006 | Отправлено: 00:12 18-01-2010 | Исправлено: BorlandIMHO, 19:46 21-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ещё бы в фоновом режиме всё выполнялось автоматически вообще лафа была )
    Тоесть запускалась как служба. Причём сама добисывалась в реестр. Но это я попробую сам реализовать. Всем ещё раз спасибо!

    Всего записей: 17 | Зарегистр. 16-01-2010 | Отправлено: 05:45 18-01-2010 | Исправлено: takt03, 05:49 18-01-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто пользуется wget, не у кого не было проблем, когда wget самопроизвольно повторяет в запись кусок файла килобайт на 15? Скорее всего это происходит в момент обрыва связи.

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 10:57 18-01-2010
    Busobus

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день. Возникла задачка реализовать копирование определенных папок с файлами. С копирование все ясно . Но список путей к этим файлам постоянно меняется и находиться в тхт файле. Каким образом можно парсить тхт файл? Спасибо

    Всего записей: 127 | Зарегистр. 01-10-2006 | Отправлено: 11:06 18-01-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Busobus
    вывод построчно содержимого файла с пробелами  
     
    for /f "usebackq tokens=*" %%i in ("список файлов") do echo "%%i"

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 11:14 18-01-2010
    wolf0425



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

    Цитата:
    не было проблем, когда wget самопроизвольно повторяет в запись кусок файла килобайт на 15?
    пока вроде не было. GNU Wget 1.11.4
     

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 12:00 18-01-2010
    vov4ka



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Господа и дамы,отзовитесь!В программировании батников почти ничего не понимаю,но нужно реализовать 2 задачи,читайте 2 батника:комп у меня в домене и при загрузке требует нажатия Ctrl+alt+del, ввести имя и пароль доменного юзера
    1)нужен батник,который избавляет меня от этого,т.е. чтобы комп автоматом входил под доменным юзером без моего участия
    2)Мне нужно,чтобы значение всем переменным окружения(локальным папкам temp) присваивалось  c:\windows\temp и после 19,00 эта папка автоматически чистилась,после чего комп выключался несмотря на возможные ошибки,возникающие при завершении работы windows 2003
     
    Буду премного благодарен откликнувшимся людям!

    Всего записей: 110 | Зарегистр. 29-01-2009 | Отправлено: 12:31 18-01-2010 | Исправлено: vov4ka, 12:32 18-01-2010
    Busobus

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

    Цитата:
    Busobus
    вывод построчно содержимого файла с пробелами  
     
    for /f "usebackq tokens=*" %%i in ("список файлов") do echo "%%i"

     
    Большое спасибо, а как эти пути к файлам на обработку отправлять? В какие-то переменные заносить а потом их обрабатывать?

    Всего записей: 127 | Зарегистр. 01-10-2006 | Отправлено: 13:07 18-01-2010
    wolf0425



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

    Цитата:
    Большое спасибо, а как эти пути к файлам на обработку отправлять?

    echo "%%i"  - это как раз обработка. если нужна более другая - сначала стоит прочитать for /?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 13:32 18-01-2010
    anachrom

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

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 14:23 18-01-2010
    Kirillhome



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

    Цитата:
    но нужно реализовать 2 задачи,читайте 2 батника:комп у меня в домене и при загрузке требует нажатия Ctrl+alt+del, ввести имя и пароль доменного юзера
    1)нужен батник,который избавляет меня от этого,т.е. чтобы комп автоматом входил под доменным юзером без моего участия  

    А при чём здесь bat-файл???
    Если, конечно, это надо сделать на многих компьютерах - то нужна автоматизация, а иначе - см. здесь
    Если принципиально редактировать реестр через bat-файл....
     
    Ну, что то типа такого...

    Код:
     
    @echo off
    set My_Name="Vasya Pupkin"
    Set My_Domain="My Domain"
    Set My_Password="My Password"
    REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f > nul
    REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d %My_Name% /f > nul
    REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName /t REG_SZ /d %My_Domain% /f > nul
    REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d %My_Password% /f > nul
     

     
     

    Цитата:
    2)Мне нужно,чтобы значение всем переменным окружения(локальным папкам temp) присваивалось  c:\windows\temp и после 19,00 эта папка автоматически чистилась,после чего комп выключался несмотря на возможные ошибки,возникающие при завершении работы windows 2003  

    Ну, что то типа такого...
     
    Первое - ставим в автозагрузку

    Код:
     
    @echo off
    REG ADD "HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v TEMP /t REG_EXPAND_SZ /d "C:\TEMP" /f > nul
     

     
    второе - ну, наверное в планировщик закинуть

    Код:
     
    @echo off
    rmdir C:\TEMP /S /Q
    mkdir C:\TEMP > nul 2>nul
    shutdown -s -f
     

    и запускать в нужное время (желательно в shutdown ещё добавить причины, что бы при включении не спрашивал - а почему перезагрузился)

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, можно ли запустить .bat-файл от имени администратора с помощью другого bat- или cmd-файла?
    Если можно, то как?
    ОС:Windows 7

    Всего записей: 84 | Зарегистр. 29-01-2006 | Отправлено: 23:16 18-01-2010 | Исправлено: Lion654, 23:19 18-01-2010
    Alex1985

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    батник стартует службой. рабочий каталог получается system32, а нужен тот, в котором лежит батник. cd c:\папка не подходит, потому что батник может лежать в разных папках. как обойти?

    Всего записей: 824 | Зарегистр. 07-05-2004 | Отправлено: 02:01 19-01-2010 | Исправлено: Alex1985, 02:02 19-01-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alex1985
    В шапке
    Переменная %0 [?]  

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 02:06 19-01-2010
    Alex1985

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

    Цитата:
    set cpath=%~dp0
    ping 127.0.0.1 -t

    в результате

    Цитата:
    C:\WINDOWS\system32>set cpath=C:\test\
     
    C:\WINDOWS\system32>ping 127.0.0.1 -t

     
    Добавлено:
    а...  cd %~dp0
    вопросов больше не имею

    Всего записей: 824 | Зарегистр. 07-05-2004 | Отправлено: 02:16 19-01-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    лучше  cd /d "%~dp0"

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 03:48 19-01-2010 | Исправлено: wolf0425, 03:49 19-01-2010
    Alex1985

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

    Всего записей: 824 | Зарегистр. 07-05-2004 | Отправлено: 03:55 19-01-2010
    vov4ka



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Kirillhome,спасибо!Как раз то,что нужно!Хотелось бы уточнить еще несколько моментов

    Цитата:
    А при чём здесь bat-файл???  
    Если, конечно, это надо сделать на многих компьютерах - то нужна автоматизация, а иначе - см. здесь  
    Если принципиально редактировать реестр через bat-файл....

    Да, это надо сделать на нескольких компах!Что Вы подразумеваете под понятием "Автоматизация"? И еще:какую прогу посоветуете использовать вместо стд. планировщика,желательно компактную?
     
    P.S. Огромнейшее Вам СПАСИБО,то,что нужно!!!
     
     
     

    Всего записей: 110 | Зарегистр. 29-01-2009 | Отправлено: 06:29 19-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