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

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

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

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    Nikoderiko

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

     
    UPD: king_stiven, спасибо огромное!
    получилось!

    Всего записей: 809 | Зарегистр. 17-07-2002 | Отправлено: 22:08 16-03-2010 | Исправлено: Nikoderiko, 23:34 16-03-2010
    barbarusa

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пусть имеется текстовый файл sums.txt   с разделителями следующего формата:
    Фамилия|Имя|Отчество|Сумма
    Например:
    Петров|Петр|Петрович|1450
    Иванов|Иван|Иванович|1200
    Необходимо написать пакетный файл seeksum.cmd, который запускался бы с двумя параметрами командной строки:
    MIN МАХ
    где min — минимальная сумма, мах — максимальная сумма, и искал в файле sums.txt всех людей, у которых сумма меньше либо равна мах, но больше либо равна min. Информацию выводить в файл suminfo.txt, при¬чем фамилии должны идти в алфавитном порядке.  
    Если пакетный файл запуска¬ется вообще без параметров, то вывести описание его синтаксиса.
     
    Не подскажите как можно организовать сам цикл поиска?

    Всего записей: 3 | Зарегистр. 16-03-2010 | Отправлено: 22:14 16-03-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nikoderiko
    for %%i in (*) do (
        md "%%~ni"
        move "%%i" "%%~ni"
    )

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 23:14 16-03-2010
    bdvrt



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо за инфу, но мне нужно немного не то. Необходима как бы командная эмуляция комбинации Ctrl+V , при автоматическом создании и сразу же последующем открытии txt  документа моим скриптом. Чтобы не нажимать Ctrl+V, а текст уже содержащийся в буфере сам вставлялся при открытии.
    for /f "tokens=1,2,3,4,5,6,7 delims=:,. " %%a in ('echo ReadMe') do echo. > %%c%%b%%a%%d%%e%%f.txt&&start c:\progra~1\Notepad++\Notepad++.exe %%c%%b%%a%%d%%e%%f.txt
    Ctrl+V ???

    Всего записей: 277 | Зарегистр. 22-06-2007 | Отправлено: 23:17 16-03-2010
    king_stiven

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

    Цитата:
    Необходима как бы командная эмуляция комбинации Ctrl+V  

    nircmd делает эмуляцию нажатий клавиш.

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 00:44 17-03-2010
    bdvrt



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

    Всего записей: 277 | Зарегистр. 22-06-2007 | Отправлено: 01:44 17-03-2010
    barbarusa

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я выше писал,условие про задачку на min и max.Вот начал писать код...
     
    @echo off
     
    if -%1==- goto :2
    set min=%1
    set max=%2
     
    FOR /F "TOKENS=4* DELIMS=|" %%i IN (sums.txt) DO (  
    IF  %%i LEQ %max% if %%i GEQ %min% @echo %%i && %%i>suminfo.txt  
     
    )
     
     
     
    goto :eof
    :2  
    echo seeksum.bat  [min] [max]
    pause
     
     
    Почему %%i не может записаться в текстовый файл?
    И в том ли направлении я вообще двигаюсь,тут я сравниваю числа и пытаюсь записать их в suminfo.txt ,но мне надо записать полную целую строку,содержащую числа подходящих по условию.

    Всего записей: 3 | Зарегистр. 16-03-2010 | Отправлено: 02:29 17-03-2010
    wolf0425



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

    Цитата:
    Почему %%i не может записаться в текстовый файл?  
    сразу по двум причинам:  
    потому что && - спецсимвол, а число>  - это перенаправление соответствующего потока  
    Ну и по условию - тебе надо было написать фамилии по алфавиту, а не только числа сумм.
     

    Код:
    FOR /F "TOKENS=1,2,3* DELIMS=|" %%a IN (' sort sums.txt') DO (
        IF  %%d LEQ %max% if %%d GEQ %min% 1>>suminfo.txt echo %%a %%b %%c %%d
    )

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 04:18 17-03-2010 | Исправлено: wolf0425, 04:27 17-03-2010
    barbarusa

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

    Всего записей: 3 | Зарегистр. 16-03-2010 | Отправлено: 12:05 17-03-2010
    pandomnik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    здравствуйте,помогите пожалуйста. Была задана задача: написать батник,который бы открывал папки для доступа по сети и закрывал их при повторном запуске.При всем при этом,он должен брать параметры из текстового файла,то есть в текстовом файле должны быть указаны имена папок которые стоит открыть(закрыть) для доступа.
    И если можно,подскажите как указать батнику путь к этому текстовому файлу...
     
    Помогите пожалуйста,вопрос карьеры будущего специалиста,всем спасибо.

    Всего записей: 4 | Зарегистр. 08-03-2010 | Отправлено: 15:05 17-03-2010
    dronxumuk

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, такая задачка. Необходимо проанализировать текстовый файл LAST_REC.TXT на наличие в каждой строке записи "#host"  
    Далее: в случае обнаружения подобной записи - показать всю строку её содержащую; если во всем документе нет такого сочетания символов - вывести сообщение, что такое не встретилось.
     
    Заранее благодарю!

    Всего записей: 7 | Зарегистр. 14-09-2008 | Отправлено: 20:53 17-03-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Такая задачка, имеется рар архив, в нём одна папка с подпапками:
    folder 1\ ...\folder n
    в папке folder n несколько файлов:
    file 1
    file 2
      ...
    file n
     Требуется извлечь первые пять файлов в папку с именем первого файла, следующие 5 файлов в папку с именем шестого файла и т д. Можно это сделать без создания временного списка извлекаемых файлов?
     
    Добавлено:
    dronxumuk
    for /?
    findstr /?
    echo /?

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 21:16 17-03-2010
    alin



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, возможно ли реализовать такой скрипт:
    1. поиск основного маршрута на компе (например 192.168.0.1);
    2. прописывает маршрутизацию (например route add -p 10.0.0.0 mask 255.0.0.0 192.168.1.1).

    Всего записей: 683 | Зарегистр. 05-08-2004 | Отправлено: 21:27 17-03-2010
    dronxumuk

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven, я читал хелп, но не разобрался в параметрах.
    Нельзя ли подробнее описать или дать линк на похожую задачу?

    Всего записей: 7 | Зарегистр. 14-09-2008 | Отправлено: 21:40 17-03-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dronxumuk
    Цитата:
    Народ, такая задачка. Необходимо проанализировать текстовый файл LAST_REC.TXT на наличие в каждой строке записи "#host"  

    Код:
    find "#host" <LAST_REC.TXT || echo #host not found

     
    king_stiven
    Цитата:
    Можно это сделать без создания временного списка извлекаемых файлов?  

    ну если тебя не напряжет вызывать rar N+1 раз (список для for и пофайлово вызовы на распаковку) - то наверно можно и без списков, какие видишь проблемы то?
    Хотя список на 5 файлов наверно можно просто в переменной сделать.

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 21:41 17-03-2010 | Исправлено: wolf0425, 11:10 18-03-2010
    mugil_cephalus

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

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:50 17-03-2010
    Dimau1981

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Выложите плиз "Пакет утилит для организации интерфейса в bat-файлах", в шапке ссылка мертвая.
     
     
    И еще вопрос, реально ли это из батника с помощью echo вывести в файл?
     
    Option Explicit
    Dim objFSO
    Dim objArgs
    Dim intErrCode
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    Set objArgs = WScript.Arguments
    If objArgs.Count <> 1 Then
        WScript.Echo "Need argument [Folder]:" & vbCrLf _
            & "ClearFolder.vbs <Path to folder>"
        intErrCode = 1
    Else
        If Not objFSO.FolderExists(objArgs(0)) Then
            WScript.Echo "Argument [" & objArgs(0) & "] is not a folder." & vbCrLf _
            & vbCrLf _
            & "Need argument [Folder]:" & vbCrLf _
            & "ClearFolder.vbs <Path to folder>"
            intErrCode = 2
        Else
            objFSO.DeleteFolder objFSO.BuildPath(objArgs(0), "*.*"), True
            objFSO.DeleteFile objFSO.BuildPath(objArgs(0), "*.*"), True
            intErrCode = 0
        End If
    End If
    Set objArgs = Nothing
    Set objFSO = Nothing
    WScript.Quit intErrCode
     
    Не выводит через echo > и echo >> нормально в другой файл, с использованием ^ удается вывести символы <>, но теряются строки, начинающиеся с &.  
    ^^& не помогает.

    Всего записей: 166 | Зарегистр. 29-12-2008 | Отправлено: 15:13 18-03-2010 | Исправлено: Dimau1981, 19:26 18-03-2010
    wolf0425



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

    Цитата:
    И еще вопрос, реально ли это из батника с помощью echo вывести в файл?  

    какие тебе видятся проблемы?
    1>>file.txt echo.    ^& "ClearFolder.vbs <Path to folder>"

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 19:53 18-03-2010 | Исправлено: wolf0425, 19:54 18-03-2010
    Dimau1981

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А конкретней плиз? Вот в таком виде:
     
    @echo off
    echo Option Explicit > 1.vbs
    echo Dim objFSO >> 1.vbs
    echo Dim objArgs >> 1.vbs
    echo Dim intErrCode >> 1.vbs
    echo Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") >> 1.vbs
    echo Set objArgs = WScript.Arguments >> 1.vbs
    echo If objArgs.Count ^<^> 1 Then >> 1.vbs
    echo WScript.Echo "Need argument [Folder]:" & vbCrLf _ >> 1.vbs
    echo & "1.vbs ^<Path to folder^>" >> 1.vbs
    echo intErrCode = 1 >> 1.vbs
    echo Else >>1.vbs
    echo If Not objFSO.FolderExists(objArgs(0)) Then >> 1.vbs
    echo WScript.Echo "Argument [" & objArgs(0) & "] is not a folder." & vbCrLf _ >> 1.vbs
    echo & vbCrLf _ >>1.vbs
    echo & "Need argument [Folder]:" & vbCrLf _ >> 1.vbs
    echo & "1.vbs ^<Path to folder^>" >> 1.vbs
    echo intErrCode = 2 >> 1.vbs
    echo Else >> 1.vbs
    echo objFSO.DeleteFolder objFSO.BuildPath(objArgs(0), "*.*"), True >> 1.vbs
    echo objFSO.DeleteFile objFSO.BuildPath(objArgs(0), "*.*"), True >> 1.vbs
    echo intErrCode = 0 >> 1.vbs
    echo End If >> 1.vbs
    echo End If >> 1.vbs
    echo Set objArgs = Nothing >> 1.vbs
    echo Set objFSO = Nothing >> 1.vbs
    echo WScript.Quit intErrCode >> 1.vbs
    wscript.exe /nologo 1.vbs B:\1
     
    выдает ошибки, хотя сам скрипт отрабатывает правильно, т.е. удаляет файлы в заданной папке.

    Всего записей: 166 | Зарегистр. 29-12-2008 | Отправлено: 20:03 18-03-2010
    alin



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

    Цитата:
    netsh /?

    Список команд...  
    Но как выполнить одним скриптом то, что я описал выше?

    Всего записей: 683 | Зарегистр. 05-08-2004 | Отправлено: 20:09 18-03-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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru