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

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Отвечаю сам себе. Кстати, может кому нибудь пригодится. Есть утилита RemoteScript (всего 200 кило), она позволяет  выполнять батники, cmd, vbs на других машинах. Мне помогла. Классная штучка.!!!!!!!!!

    Всего записей: 1510 | Зарегистр. 03-03-2008 | Отправлено: 13:43 07-11-2008
    MGrom



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

    Цитата:
     
    Цитата:  
    MGrom  
    Задай вопрос конкретнее - приведи пример того, что тебе надо сделать  
     
     
     
     
    Мне нужно, чтобы батник искал в определённой папке файлы который содержат слово (например, Привет). После того как пройдёт поиск, все файлы содержащие это слово должны скопироваться в отдельную директорию.  
     
    Передать с команды find на команду copy с помощью | не получается.  
    т.к. на выходе финд даёт имена файлов вместе со строками или ещё какими-нибудь параметрами, что copy не понимает.  
     
    Может кто сталкивался с похожей задачкой?  

     
    Ура , кое что нашол ))
     
    FOR %A IN (*.TXT) DO (TYPE "%A" | FIND /I "Привет" > NUL && copy %A d:\111\)  
     
    Ищет в txt файлы содержащие "Привет" , если находит копирует в d:\111\
     
    Осталось ещё немного , нужно чтобы он искал в файлах созданых за последний день ... Может кто знает ?
     

    Всего записей: 15 | Зарегистр. 24-01-2007 | Отправлено: 14:33 07-11-2008
    Elroir



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

    Цитата:
    а как его в другой формат сконвертировать  

    Вместо первой строчки в скрипте используй такую:

    Код:
     
    echo wscript.echo year(date-1) ^& month(date-1) ^& day(date-1)>tmp.vbs
     



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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:37 07-11-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MGrom
    Уж сколько этих примеров в старых частях есть

    Код:
    for /f "tokens=*" %%i in ('dir /b /s ^| findstr "privet"') do echo %%i

    Насчёт даты в шапке посмотри, также есть утилита FORFILES из GNU utilities for Win32 тоже в шапке

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 14:49 07-11-2008 | Исправлено: king_stiven, 15:03 07-11-2008
    Elroir



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

    Цитата:
    нужно чтобы он искал в файлах созданых за последний день  

    Используй утилиту forfiles вместо команды for.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:53 07-11-2008
    stydik



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, нужен скрипт. Помогите с созданием. Объясню почему именно скрипт. Я написал батник, который забирает с сетевого диска документы и пакует их в формат с датой+время.
     
    @echo Начнем >> 1.log
    @Echo off
    @DATE /t >> 1.log
    @TIME /T >> 1.log
    @echo Копирую и сохраняю результат копирования в лог ...
    @xcopy v:\post\*.doc /z /c /Q >> 1.log
    @echo Пакую... >> 1.log  
    @rar a -ag  + YYYY:MM:DD:HH:MM \*.doc >> 1.log
    @echo Перемещаю архив... в папку TEMP >> 1.log
    @move *.rar TEMP
    @echo Удаляю файл doc... >> 1.log
    @del /F d:\*.doc
    @echo Cделал... >> copybankomat.log  
     
    Я хочу, чтобы он запускался через каждые полчаса. Как это сделать???  
    Сделал еще один батник  
     
    @Echo off  
    @schtasks /create /ru /sc minute /mo 30 /tn TEMP /tr d:\copy.cmd
     
    Всё бы хорошо, но хочется чтобы запускался в фоновом режиме. А то, появится, и бывает висит.  
    Вопросы : Может скрипт - ? помогите. Или если батник, то как ему втулить фоновый запуск, ну чтоб не мелькал ????
     

    Всего записей: 1510 | Зарегистр. 03-03-2008 | Отправлено: 17:05 07-11-2008
    SymA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Довольно часто не по моей вине пропадает VPN-соединение. Подключаюсь батником с командой "Rasdial".
    Запускаем батник и наблюдаем:
       
    Screenshot before
     
    и через 5-7 секунд, если подключение потерпело неудачу, наблюдаем:
       
    Screenshot after
     
    Подскажите, как написать, чтобы в случае НЕподключения батник возвращался в точку ":r". Пробовал findstr, искать текст "компьютер не отвечает" и др. и если найдёт, то GOTO:R, но не получилось.
     

    Код:
     
    Title ADSL
    :r
    rasdial "VPN" login pass

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 19:24 07-11-2008 | Исправлено: SymA, 19:29 07-11-2008
    king_stiven

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

    Цитата:
    Я хочу, чтобы он запускался через каждые полчаса. Как это сделать???  


    Цитата:
    Или если батник, то как ему втулить фоновый запуск, ну чтоб не мелькал ????  

    В шапке

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 19:34 07-11-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SymA
     
    А у тебя точно логин - login, а пароль - password??

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 07:31 08-11-2008
    buggyboaster



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

    Код:
    set where=%temp% %systemroot% %systemroot%\system32
    set what=" 2000 " "                 0 "
    if exist findings.txt del /q findings.txt
     
    FOR %%a IN (%where%) DO (
       FOR %%b IN (%what%) DO (
     FOR /F "usebackq tokens=3*" %%g IN (^
    `dir /A-D /-C /OS %%a ^| FIND /i %%b`) do (
        if not %%h==h323log.txt @ECHO %%a\%%h>> findings.txt
        )
      )
    )

    нужен совет как вежливо решать проблему при кучу ненужных '%%h' (не только h323log.txt).

    Всего записей: 399 | Зарегистр. 31-12-2001 | Отправлено: 09:35 08-11-2008
    SymA



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

    Цитата:
    А у тебя точно логин - login, а пароль - password??

     
    Правильно всё. Я изменил тут специально

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 12:51 08-11-2008
    stydik



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

    Цитата:
    stydik  
     
    Цитата:Я хочу, чтобы он запускался через каждые полчаса. Как это сделать???  
    Цитата:Или если батник, то как ему втулить фоновый запуск, ну чтоб не мелькал ????  
     
    В шапке

     
    Я нашел в шапке cmdow. Пытался вставить и впервый батник и во второй. но все равно
    окно появляется..........

    Всего записей: 1510 | Зарегистр. 03-03-2008 | Отправлено: 13:00 08-11-2008
    sand3r

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго времени суток!
    Такая задачка:
    Имеем 7000 файлов формата ASF по 1.2 мб. Необхожимо их склеить в один большой файл используя программку  ASFtools v3.1. Она может склеить только 88 файлов за 1 раз. хотелось бы это все автоматизировать и вот кое что пытался написать

    Цитата:
    Код:
    set ofile=1
    set ifile1=1
    set ifile2=2
    set ifile3=3
    set ifile4=4
    rem *************************
    rem здесь их должно быть 88
    rem *************************
    cd /d "c:\program files\AsfTools 3.1\"
    asfcut.exe -i "D:\a\%ifile1%.ASF" -i "D:\a\%ifile2%.ASF" -i "D:\a\%ifile3%.ASF" -i "D:\a\%ifile4%.ASF" -o "D:\b\%ofile%.ASF" -y
    set /a ofile=%ofile%+1
    set /a ifile1=%ifile1%+4
    set /a ifile2=%ifile2%+4
    set /a ifile3=%ifile3%+4
    set /a ifile4=%ifile4%+4
    cd /d "c:\program files\AsfTools 3.1\"
    asfcut.exe -i "D:\a\%ifile1%.ASF" -i "D:\a\%ifile2%.ASF" -i "D:\a\%ifile3%.ASF" -i "D:\a\%ifile4%.ASF" -o "D:\b\%ofile%.ASF" -y
    rem *************************
    rem потом надо увеличить переменные ofile на 1, а ifile на 88 каждую
    rem и так до тех пор пока не обработает все
    rem *************************
    pause
     


    Всего записей: 2 | Зарегистр. 08-11-2008 | Отправлено: 13:28 08-11-2008 | Исправлено: sand3r, 13:28 08-11-2008
    Nagual



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

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 14:21 08-11-2008
    sand3r

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

    Всего записей: 2 | Зарегистр. 08-11-2008 | Отправлено: 14:48 08-11-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    buggyboaster
    Можно внести все ненужные названия файлов в отдельный файл, например unwanted.lst (одно название на каждой строке) и добавить после "| FIND /i %%b", еще и "| findstr /v /g:unwanted.lst".
     
     
    Добавлено:
    stydik
    Используй hstart.exe (там же - в шапке). Этой утилитой батники запускаются в скрытом режиме.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:27 08-11-2008
    FantomaS77

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. При написании пакетного файла я столкнулся с проблемой. Надо удалить файл или переместить в каталог уровнем выше. Но del не изменяет значения errorlevel.
    Простой пример:
    Создаю на D:\ файл 1.1
    Создаю Пакетный файл с названием temp с таким содержанием:
    del D:\1.1
    echo %errorlevel%
    в комадной строке вызываю этот файл
    Все происходит нормально
    C:\Documents and Settings\User>D:\Учеба\ОС\temp
     
    C:\Documents and Settings\User>del D:\1.1
     
    C:\Documents and Settings\User>echo 0
    0
     
    Затем опять вызываю его же(естественно файла уже нет)
    Результат:
    C:\Documents and Settings\User>D:\Учеба\ОС\temp
     
    C:\Documents and Settings\User>del D:\1.1
    Не удается найти D:\1.1
     
    C:\Documents and Settings\User>echo 0
    0
     
    Файл не найден, но errorlevel все равно равен 0.
     
    В связи с вышесказанным 2 вопроса:
    1)Почему del не изменяет значение errorlevel? Или мб есть ли такая команда проверки существования файла на диске?
    2)Как переместить файл в каталог уровнем выше?
    Заранее спасибо.

    Всего записей: 4 | Зарегистр. 08-11-2008 | Отправлено: 20:45 08-11-2008
    Drunken Master

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FantomaS77
    1. IF EXIST 1.tmp DEL 1.tmp
    2. MOVE 1.tmp ..\1.tmp

    Всего записей: 75 | Зарегистр. 11-12-2005 | Отправлено: 21:10 08-11-2008
    FantomaS77

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Drunken Master, спасибо
    Я так понял, Exist 1.tmp - это проверка существования файла?
    И откуда ты узнал о существовании exist и .. ?
    Вроде в стандартном help-e не нашел...

    Всего записей: 4 | Зарегистр. 08-11-2008 | Отправлено: 21:32 08-11-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sand3r
    copy/?|findstr/i b
    попробуй склеить несколько файлов, при положительном результате надо будет написать скрипт

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 21:35 08-11-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