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

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



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

    Код:
    for /f "Tokens=1-3 Delims=," %%a in ('type 1.txt ^| findstr /i "windows"') do set ProductName=%%a& set ProductID=%%b& set ProductKey=%%c
    inifile "%ppath%keys.ini" [WinKeys] ProductName=%ProductName%
    inifile "%ppath%keys.ini" [WinKeys] ProductID=%ProductID%
    inifile "%ppath%keys.ini" [WinKeys] ProductKey=%ProductKey%

    как все это выполнить только если нет ошибки findstr?

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

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 14:18 12-03-2011
    king_stiven

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

    Код:
    for /f "Tokens=1-3 Delims=," %%a in ('type 1.txt ^| findstr /i "windows"') do (
    inifile "%ppath%keys.ini" [WinKeys] ProductName=%%a
    inifile "%ppath%keys.ini" [WinKeys] ProductID=%%b
    inifile "%ppath%keys.ini" [WinKeys] ProductKey=%%c
    )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:35 12-03-2011
    Vladins

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как добавить в конец имени файла фразу "for plot" (при переименовании дата должна быть перед именем, а for plot в конце имени) в этом батнике:

    Код:
     
    chcp 1251
    set CURDATE=%DATE%
    for /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set VTIME=%%a:%%b)
    set VTIME=%VTIME::=-%
    for /f "delims=" %%i in ('dir /O:-D /T:c /a:-d /b *.dwg *.doc *.xls *.rar *.zip *.7z *.jpg *.jpeg *.pdf *.tif *.txt *.rtf') do (  
       ren "%%i" "%CURDATE:~6,4%_%CURDATE:~3,2%_%CURDATE:~0,2% %%i"  
       exit  
    )
     

    Всего записей: 68 | Зарегистр. 22-05-2010 | Отправлено: 21:51 12-03-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Vladins
    ren "%%i" "%CURDATE:~6,4%_%CURDATE:~3,2%_%CURDATE:~0,2% %%~ni for plot.%%~xi"

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 22:39 12-03-2011
    ForposT_ForeveR



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте.
    Есть файл текстовый paths.txt
    При работе указанного ниже скрипта, путь считываемый с текстового файла обрезается до первого пробела.
    Изменение %1 на "%1" не помогло.
    Также пробовал добавлять кавычки в путь в тексовый файл, ничего не помогло.
    Результат смотрите на скриншоте.
    (1) - в тхт указан просто путь
    (2) - в тхт указан путь в кавычках
    Кстати, если указать в скрипте "%1" то будет практически тоже самое, что и в случае (2), только справа ещё будет две двойные кавычки.
     
       

    Код:
    SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
     for /f %%N in (paths.txt) do call :schet "%%N"  
    pause
     
    :schet
    joiner.exe %1 forpost.bmp

    Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 12:38 13-03-2011 | Исправлено: ForposT_ForeveR, 12:40 13-03-2011
    01MDM



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

    Код:
     
    @echo off
    for /f "tokens=*" %%i in (paths.txt) do joiner.exe "%%~i" forpost.bmp
     



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:36 13-03-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    ага, а если искомые параметры в тексте разделены запятой, правильней указывать какой "Delims="?

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

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 15:42 13-03-2011
    Free_Soft



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

    Код:
    for /f "Tokens=1,3 Delims=," %%a in ('type keys.lst ^| findstr /i "windows"') do (
       echo.%%a
    )

    строчки в keys.lst имеют вид
    Код:
    Microsoft Office Professional Plus 2010,..

    как можно убрать пробелы?

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

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



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

    Код:
     
    @echo off
    setlocal
     
    for /f "tokens=1,3 delims=," %%i in (' findstr /i "windows" keys.lst ') do (
     
        call:echo %%i
        call:echo %%j
     
    )
     
    goto:eof
     
    :echo
    set "var=%*"
    echo %var: =%
     



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:14 13-03-2011 | Исправлено: 01MDM, 21:14 13-03-2011
    Free_Soft



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

    Цитата:
    Пробелы где? Все?  

    нет, только которые попадают в %%a. Вот еще:
     

    Код:
    for /f "Tokens=1,3 Delims=," %%a in ('type keys.lst ^| findstr /i "windows"') do (
       inifile "%cpathy%\keys.ini" [WinKeys] %%a=%%b
    )

    а как здесь из %%a убрать пробелы?

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

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



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

    Код:
     
    @echo off  
    setlocal  
     
    for /f "tokens=1,3 delims=," %%i in (' findstr /i "windows" keys.lst ') do call:inifile "%%i" "%%j"  
     
    goto:eof  
     
    :inifile  
    set "var=%~1"  
    inifile "%cpathy%\keys.ini" [WinKeys] %var: =%=%~2
     


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

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    ага, работает. Вот еще туплю:
    есть
    Код:
    for /f "Delims=" %%a in ('keyfind /namewin') do set N=%%a

    как напечатать переменную N? не в смысле
    Код:
    echo %N%
    , а в смысле
    Код:
    echo <ее раскрывшееся значение>


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

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 23:35 13-03-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    В цикле? Напечатай %%a:

    Код:
     
    ....) do (
     
        echo %%a
        set "N=%%a"
     
    )
     



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:05 14-03-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    не, так не пойдет у меня... Вот полная конструкция:
     

    Код:
    for /f "Delims=" %%a in ('keyfind /namewin') do (
       for /f "delims=" %%i in ('inifile "%cpath%\keys.ini" [WinKeys] %%a') do %%i
    )

     
    keyfind /namewin в выхлопе дает к примеру
    Код:
    Windows7Ultimate
    . Далее она подставляется в цикл с inifile. Эта утилита в свою очередь имеет на выходе
    Код:
    set <значение %%a>=<значение ключа из ini файла>

    и вот после всего этого нужно получить уже новое значение %%a, которое теперь равно значению ключа. т.е.
    Код:
    echo %Windows7Ultimate%


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

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 00:16 14-03-2011 | Исправлено: Free_Soft, 00:17 14-03-2011
    king_stiven

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

    Цитата:
    for /f "Delims=" %%a in ('keyfind /namewin') do (  
       for /f "delims=" %%i in ('inifile "%cpath%\keys.ini" [WinKeys] %%a') do %%i  
    )  


    Код:
     
    for /f "Delims=" %%a in ('keyfind /namewin') do (  
       for /f "delims=" %%i in ('inifile "%cpath%\keys.ini" [WinKeys] %%a') do echo %%i  
    )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 09:34 14-03-2011
    Free_Soft



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

    Код:
    echo %%i

    на выходе из цикла будет выглядеть так:

    Код:
    set Windows7Ultimate=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

     
    Добавлено:
    немного разобрался. сделал так:

    Код:
    setlocal enabledelayedexpansion
     
    for /f "Delims=" %%a in ('keyfind /namewin') do (
       for /f "Delims=" %%i in ('inifile "%cpath%\keys.ini" [WinKeys] %%a') do %%i
       set winkey=!winkey!%%a
    )
    echo.!%winkey%!
     
    for /f "Delims=" %%a in ('keyfind /nameoffice') do (
       for /f "Delims=" %%i in ('inifile "%cpath%\keys.ini" [OfKeys] %%a') do %%i
       set ofkey=!ofkey!%%a
    )
    echo.!%ofkey%!

     
    В случае с winkey все ok, т.к. ключ в цикле всегда один. А вот в случае с ofkey (если ключей несколько) цикл не работает. Как его правильно оформить?

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

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 09:48 14-03-2011
    king_stiven

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

    Цитата:
     do %%i  

    ошибка

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 16:19 14-03-2011
    Johny_x3mal



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток.
       Может быть эта тема уже поднималась, но уж увольте ... 10 частей не перечитать круче романа "Война и Мир". Так вот, необходимо выполнить активацию Windows 7 и Office 2010 в конторе, знаю что активацию можно выполнить с командной строки, собственно, сам вопрос: опишите скрипт для автоматизации этого процесса, пожалуйста, ибо сам я не силен...

    Всего записей: 222 | Зарегистр. 07-09-2005 | Отправлено: 18:04 14-03-2011
    Free_Soft



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

    Цитата:

    Цитата:
     do %%i  

    ошибка

    не ошибка, ибо

    Код:
    The program will generate a SET statement, and send it to STDOUT.

    (из описания inifile.exe)

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

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 18:34 14-03-2011
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Johny_x3mal
    Для начала глянь здесь

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 10:19 15-03-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