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

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Иди в Справка и поддержка - Справочник по параметрам командной строки - там ответы по всем командам.

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 21:28 13-11-2009
    mugil_cephalus

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

    Цитата:
    я не вижу в данном случае cmd-шное окно пакетного файла 1.bat (видимо потому что это задание выполняется под пользователем admin)
    - все так - окно не увидишь, хотя  задание и будет запускаться  
     
     
    Добавлено:
    king_stiven

    Цитата:
    Иди в Справка и поддержка - Справочник по параметрам командной строки - там ответы по всем командам.


    Цитата:
    И при всем при этом я не могу его сам составлять, т.к. методом тестирования - не подходит, мне нужна 100%-ная уверенность (естественно, относительно) в его отработке - что он не пропускает наличиствующие субдиректории/файлы - потому что могут со временем обнаружиться "подводные камни" (если я стал бы действовать по методе самостоятельных проб и ошибок), - как сегодня-вчера в ситуации с "пустой" строкой / CRLF.


    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:41 13-11-2009
    SANIOK_AV



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

    Цитата:
    - все так - окно не увидишь, хотя  задание и будет запускаться  

    ну а что сделать чтоб увидеть?))

    Всего записей: 485 | Зарегистр. 31-03-2009 | Отправлено: 22:10 13-11-2009
    mugil_cephalus

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

    Цитата:
    ну а что сделать чтоб увидеть?))  

     
    насколько знаю, это невозможно  
    многие специально делают такую схему для скрытия окна
    только  SCHTASKS /CREATE /RU currentuser
    а для какой цели тебе нужно видеть окно? ведь задание запускается/отрабатывает и можно посмотреть log отработки задания - перенаправлением output 1.bat в log

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 22:24 13-11-2009
    SANIOK_AV



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

    Цитата:
    а для какой цели тебе нужно видеть окно?  

    потому как в процесе выполнения батника надо будет нажимать кнопки некоторые...

    Цитата:
    можно посмотреть log отработки задания - перенаправлением output 1.bat в log

    Спасибо...это неплохая идея!
    только вот если:
    1) придумаю как автоматизацию нажатия этих кнопок))
    2) придумаю как отследить что задание уже выполнилось
     

    Всего записей: 485 | Зарегистр. 31-03-2009 | Отправлено: 22:47 13-11-2009
    mugil_cephalus

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

    Цитата:
    1) придумаю как автоматизацию нажатия этих кнопок))

    cmd это не может, - только autoIt
    напиши в 1.bat строку - runas от имени currentuser другого батника, например - 2.bat - пусть он [2.bat] просит нажатия клавиш и передает результат в 1.bat, который ожидает результатов и после этого продолжает работу  

    Цитата:
    2) придумаю как отследить что задание уже выполнилось  
     

    SCHTASKS /Query /v или в конце 1.bat - какую-то комманду, которая будет для тебя меткой или EVENTTRIGGERS /Create
     
    почитай Уильям Станек - Командная строка Microsoft Windows - http://rapidshare.com/files/89629093/Stanek_CLI_MS_Win.rar    

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 23:10 13-11-2009
    SANIOK_AV



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

    Цитата:
    cmd это не может, - только autoIt  

    а vbs?

    Цитата:
    SCHTASKS /Query /v или в конце 1.bat - какую-то комманду, которая будет для тебя меткой или EVENTTRIGGERS /Create  

    если что буду пробовать...Спасибо!

    Цитата:
    почитай Уильям Станек - Командная строка Microsoft Windows - http://rapidshare.com/files/89629093/Stanek_CLI_MS_Win.rar

    ок...Спасибо...
     
    я вот подумал...если с нажатием кнопок только autoIt справиться, то возможно в эту сторону двигаться...?
     
     

    Всего записей: 485 | Зарегистр. 31-03-2009 | Отправлено: 23:46 13-11-2009
    mugil_cephalus

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

    Цитата:
    а vbs?

    насколько знаю и VBS и JS, в общем на WSH я такого не встречал
    про powershell - не знаю
    есть хороший сайт - посмотри - может что найдешь http://www.robvanderwoude.com/index.html
     
    вот еще посмотри от NIKZZZZ   -      http://forum.ru-board.com:9000/topic.cgi?forum=62&topic=17154&start=85&limit=1&m=1
     

    Цитата:
    BAu3.exe  
     
    Существует довольно много сонсольных утилит, например CLCC, gsar,hstart, msgbox, nircmd  и т.п. , в большинстве случаев BAu3.exe их может заменить.  
     
    BAu3.exe - Консольная утилита, позволяющая выполнить одну строку скрипта, написанного на Autoit с полной передачей данных в .bat файл.  
    Можно, конечно , написать скрипт на самом Autoit, но это не всегда проще.

     
    и еще Программирование "удобняшек" на VBScript      http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=0

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 23:59 13-11-2009 | Исправлено: mugil_cephalus, 00:11 14-11-2009
    Ortios



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

    Цитата:
    echo off  
    for %%A in (C:\test\*.txt) do call:_1 %%A  
    goto :eof  
     
    :_1  
    for /f "tokens=*" %%i in ('type %1') do 0>nul 1>C:\test\%~n1.txt set /p="%%i" && del /q %1 && ren C:\test\%~n1_.txt %~nx1  
    goto :eof

    А чего твое решение задачи об удалении пустой строки для soft111 без конца порождает файлы, например, оставляю в каталоге C:\test\1.txt один файл и батник порождает еще 231 файл (1_.txt,1__.txt,1___.txt...) , в которых, впрочем, верное решение с первой строчкой из файла 1.txt? Странно что soft111 остался доволен этим решением.
    Этим же глюком страдает и решение второй задачи для soft111
    Или может это глюки у меня, тогда просьба подсказать где?

    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 00:43 14-11-2009
    SANIOK_AV



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

    Цитата:
    вот еще посмотри от NIKZZZZ   -      http://forum.ru-board.com:9000/topic.cgi?forum=62&topic=17154&start=85&limit=1&m=1  
     

    Класс!  
    Будем знать!

    Цитата:
    Можно, конечно , написать скрипт на самом Autoit, но это не всегда проще.  

    С одной стороны согласен...тем более что в Autoit я полный ноль...))
    Но с другой стороны я встречал решение по поводу запуска программы от имени другого пользователя:

    Код:
    ; Set the RunAs parameters to use local adminstrator account
    RunAsSet("Администратор", @Computername, "adminpassword")
    ; Run registry editor as admin
    RunWait("regedit.exe")
    ; Reset user's permissions
    RunAsSet()

     

    Всего записей: 485 | Зарегистр. 31-03-2009 | Отправлено: 00:52 14-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ortios
    ну если ты точно убрал все пробелы из кода, то:
    1) я весь скрипт не тестировал - только отдельные коды, но у меня тоже один раз был глюк - http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1400  -  
        -   soft111 писал:  
    Цитата:
    я код программы не изменяю, оставляю как есть и пути тоже сохраняются C:\test  
     
    В текстовом файле написано:  
     
     
    Цитата:slovo  
     
     
     
    После отрабатывания батника, он добавляет еще к slovo пробел.

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

    , а потом все нормально работало
    2) я еще не уверен в отработке скриптом вот этого:
    Цитата:
    wolf0425  
    подскажи, пожалста, в этом коде:  
    echo on  
    for %%A in (C:\test\*.txt) do call:_1 %%A  
    goto :eof  
     
    :_1  
    for /f "tokens=*" %%i in ('type %1') do (echo %%i>C:\test\%~n1_.txt && del /q %1 && ren C:\test\%~n1_.txt %~nx1)  
    goto :eof  
     
    при старте первого цикла формируется виртуальный/эмулированный пул ВСЕХ итераторов (то есть виртуальный list всех *.txt) ? или нет и тогда "созданный" во втором цикле  
    лексемой - ren C:\test\%~n1_.txt %~nx1 - *.txt-файл попадет в первый цикл?

    3) вообще нужно видеть листинг, как скрипт у тебя отрабатывает, иначе не поймешь что ему не нравиться
    4) попробуй вот так  
    echo off  
    for %%A in (C:\test\*.txt) do call:_1 %%A  
    goto :eof  
       
    :_1  
    for /f "tokens=*" %%i in ('type %1') do 0>nul 1>C:\test\%~n1 set /p="%%i"
    goto :eof
     
     
     
     -  и если у тебя один файл
    Цитата:
    например, оставляю в каталоге C:\test\1.txt один файл  
    и этот код тоже глюкнет, то скорее всего глюк у тебя - напиши echo on и показывай листинг
     
     
    Добавлено:
    SANIOK_AV

    Цитата:
    тем более что в Autoit я полный ноль...))  

    как и я...

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:07 14-11-2009 | Исправлено: mugil_cephalus, 11:11 14-11-2009
    Ortios



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

    Цитата:
    я весь скрипт не тестировал - только отдельные коды

    Интересный подход.
    Ну так вот, в твоем коде не работает фрагмент

    Цитата:
    for /f "tokens=*" %%i in ('type %1') do 0>nul 1>C:\test\%~n1.txt set /p="%%i" && del /q %1 && ren C:\test\%~n1_.txt %~nx1

     
    Вот код который работает:

    Код:
    echo off  
    for %%A in (C:\test\*.txt) do call:_1 %%A  
    goto :eof  
       
    :_1  
    for /f "tokens=*" %%i in ('type %1') do 0>nul 1>C:\test\%~n1.txt set /p="%%i" & del /q %1 && ren C:\test\%~n1_.txt %~nx1  
    goto :eof

    Вот поэтому я и удивился, как soft111 натравил твой код на свой миллион файлов и не забил себе все дисковое пространство. А ты, решив по той же схеме вторую задачу для soft111 сделал ту же самую ошибку (или опечатку) и никто ничего не заметил.

    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 12:31 14-11-2009
    mugil_cephalus

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

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 13:11 14-11-2009
    Ortios



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

    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 13:36 14-11-2009
    mugil_cephalus

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

    Цитата:
    И вообще, как раньше говорили старые механики, механизм должен работать не в принципе, а в кожухе.

    так кто же против вопиет? кому надо, тот пусть и кожух надевает. будет надо мне - надену. я даже не против иногда помимо удочки и порыбачить за кого-то, но только иногда и из сердобольности, но сермяга в том, что кожух у всех разный и на свой горб не напялишь чужой шагрени, будь хоть трижды филантроп

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:12 14-11-2009
    batniki



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

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 19:59 14-11-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    batniki
    for %%i in (*.@@@ *.bla *.sdx) do del /s /f /q "%%i"

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 21:48 14-11-2009 | Исправлено: king_stiven, 21:52 14-11-2009
    alexcoolmagic

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    можно ли в батнике получить в переменную содержимое клипбоарда (как по ctrl+v)?

    Всего записей: 54 | Зарегистр. 20-08-2002 | Отправлено: 10:29 15-11-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alexcoolmagic
    С помощью nircmdc.exe (в шапке) можно добавить клипбоард в файл и взять переманную из файла.

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 11:23 15-11-2009 | Исправлено: king_stiven, 11:26 15-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alexcoolmagic
    есть команда clip - но она кажется есть только в resource kit

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:50 15-11-2009
       

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