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

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



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

    Код:
    @echo off
    set str="local.txt"
    set /p str=name file:
    echo %str%
    cd %str%
    for /f "delims=" %%i in ('dir /b /a-d *.jpg') do "%~dp0\fi_c44.exe" "%%i"

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 23:28 09-03-2010
    Dimau1981

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Да, так говорит - файл не найден...
    А если указать путь с именем файла - работает, но говорит что неверное имя папки, а хочется, чтобы по указанному пути все jpg подхватывало.

    Всего записей: 166 | Зарегистр. 29-12-2008 | Отправлено: 00:07 10-03-2010 | Исправлено: Dimau1981, 00:10 10-03-2010
    sergij

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ув. Гуру - надо вывести в файл по колонкам содержимое из логов 001.log-003.log   в 001.log содержит имена компов :  002- мак -адреса :     003-имя пользователя  
     
    Надо Вывести так :  
     
    Имя копа          МАК-адрес             Имя пользователя  
    WS 01            00-13-20-22-9B-45     vasya
    WS 02            00-22-55-ff- 12-7B      chapaev  
    WS 03            00-13-20-22-9B-48      petya

    Код:
     
    del /q out.txt
    chcp 1251
    setlocal enabledelayedexpansion
     
    echo Имя комьютера      MAC-адрес    Пользователь >>out.txt
     
     
    for /f "tokens=*" %%i in (001.log) do set pc="%%i"
     
    for /f "tokens=*" %%i in (002.log) do set mac="%%i"
     
    for /f "tokens=*" %%i in (003.log) do set gen="%%i"
     
    echo %pc%    %mac%        %gen%  >> out.txt
     
     
     
    У меня выводит только данные из самых нижних рядов а надо с 1-го и вниз
     
    Помогите пожалуйста а то нигде не нашёл ответ

    Всего записей: 39 | Зарегистр. 14-03-2006 | Отправлено: 02:17 10-03-2010
    Dimau1981

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

    Всего записей: 166 | Зарегистр. 29-12-2008 | Отправлено: 02:23 10-03-2010 | Исправлено: Dimau1981, 02:29 10-03-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sergij
    Проще через утилиту сделать
    sed -n "5p" 1.log
    выведет 5 строку 1.log
     
    Добавлено:
    Dimau1981
    выложи лог, то есть запускаешь батник и копируешь из чёрного окошечка,
    может вот здесь:
    Цитата:
    %~dp0\fi_c44.exe

    надо  
    %~dp0fi_c44.exe

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 09:07 10-03-2010 | Исправлено: king_stiven, 09:12 10-03-2010
    mugil_cephalus

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

    Код:
    setlocal enabledelayedexpansion
    :loop
    for /f "tokens=* %skp%" %%i in (001.log) do (
    0>nul 1>>out.txt 2>&1 set /p="pc=%%i         "
    for /f "tokens=* %skp%" %%i in (002.log) do (
    0>nul 1>>out.txt 2>&1 set /p="mac=%%i         "
    for /f "tokens=* %skp%" %%i in (003.log) do (
    0>nul 1>>out.txt 2>&1 set /p="gen=%%i         "
    if /i "_%skp%" equ "_" set "skp=0"
    set /a skp=!skp!+1
    set "skp=skip=!skp!"
    1>>out.txt 2>&1 echo.
    goto:loop
    )))
    pause

    001.log у меня такой:
    pc1
    pc2
    pc3
    out.txt получился:
    pc=pc1         mac=mac1         gen=gen1          
    pc=pc2         mac=mac2         gen=gen2          
    pc=pc3         mac=mac3         gen=gen3          

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:06 10-03-2010 | Исправлено: mugil_cephalus, 10:13 10-03-2010
    wolf0425



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

    Цитата:
    if /i "_%skp%" equ "_" set "skp=0"  
    set /a skp=!skp!+1
    set "skp=skip=!skp!"
    goto:loop  
    ппц мне мозги этот финт переклинил.
    Сам придумал?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 11:49 10-03-2010
    mugil_cephalus

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

    Код:
    chcp 1251
    setlocal enabledelayedexpansion
     
    echo Имя комьютера      MAC-адрес    Пользователь >>out.txt
     
    :loop
    for /f "tokens=* %skp%" %%i in (001.log) do (
    0>nul 1>>out.txt 2>&1 set /p="%%i                "
    for /f "tokens=* %skp%" %%i in (002.log) do (
    0>nul 1>>out.txt 2>&1 set /p="%%i         "
    for /f "tokens=* %skp%" %%i in (003.log) do (
    0>nul 1>>out.txt 2>&1 set /p="%%i"
    if /i "_%skp%" equ "_" set "skp=0"
    set /a skp=!skp!+1
    set "skp=skip=!skp!"
    1>>out.txt 2>&1 echo.
    goto:loop
    )))
    pause

    out.txt:
    Имя комьютера      MAC-адрес    Пользователь  
    pc1                       mac1             gen1
    pc2                       mac2             gen2
    pc3                       mac3             gen3

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:03 10-03-2010 | Исправлено: mugil_cephalus, 12:46 10-03-2010
    Dimau1981

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

    Всего записей: 166 | Зарегистр. 29-12-2008 | Отправлено: 14:32 10-03-2010 | Исправлено: Dimau1981, 15:03 10-03-2010
    kermit

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите как в цикл типа:
     
    :beep
    beep.com
    timeout 1
    goto :beep
     
    вставить анализ нажатия клавиши, чтобы после нажатия любой клавиши, происходил переход на другую метку?
     
     
    Добавлено:
    вобщем задача привлечь внимание писком, вставить другой диск и продолжить копирование
    если это можно покрасивше написать, подскажите!

    Всего записей: 463 | Зарегистр. 01-10-2003 | Отправлено: 14:38 10-03-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kermit
    http://forum.ru-board.com/topic.cgi?forum=5&topic=25393&start=500#9

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не, не работает. Гуру, помогите плиз...
    Ситуация такая - на G:\Soft\pic2djvu лежит прога.
    Нужно, чтобы при запуске она спрашивала путь, и по нему конвертировала все лежащие там jpg в djvu. Параметр запуска отсутствет  
    (просто "fi_c44.exe 1.jpg"). Пока получилось
     
    @echo off
    set str="local.txt"
    set /p str=name file:
    echo %str%
    cd %str%
    for /f "delims=" %%i in ('dir /b /a-d *.jpg') do "%~dp0fi_c44.exe" "%%i"
     
    но это работает, только если прога лежит в, к примеру, b:\, а картинки - b:\1

    Всего записей: 166 | Зарегистр. 29-12-2008 | Отправлено: 15:04 10-03-2010
    kermit

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
     
    не совсем то
    скрипт остановится на строке
     set /p tsk="Choose a task by number: "  
     
    и не будет пищать

    Всего записей: 463 | Зарегистр. 01-10-2003 | Отправлено: 15:04 10-03-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kermit
    можно поставить счетчик на, например, 10 beep'ov, но число этих бипов должно быть детерминированым, а не стохастическим (хотя можно и random)
    вообще опиши подробнее задачу
    Цитата:
    вобщем задача привлечь внимание писком, вставить другой диск и продолжить копирование  

    то есть должно 1 раз пискнуть, потом Press any key to continue... , потом нажимаем любую клавишу  и далее...   ??
    или должен пищать, пока не нажмешь клавишу?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 15:20 10-03-2010 | Исправлено: mugil_cephalus, 15:21 10-03-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dimau1981
     
     
    cd /d %str%
    for /f "delims=" %%i in ('dir /b /a-d *.jpg') do "G:\Soft\pic2djvu\прога.exe" "%%i"
     
    kermit
    Сторонние утилиты можно?

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 15:45 10-03-2010
    Dimau1981

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

    Всего записей: 166 | Зарегистр. 29-12-2008 | Отправлено: 16:11 10-03-2010
    kermit

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

    Цитата:
    Сторонние утилиты можно?

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

    Всего записей: 463 | Зарегистр. 01-10-2003 | Отправлено: 16:15 10-03-2010
    mugil_cephalus

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

    Код:
    call:_1
     
    :loop
    if exist "%~dpn02.bat" (echo hi) else goto:exit
    goto:loop
     
    :_1
    (echo pause
    echo del /q "%~dpn02.bat")>"%~dpn02.bat"
    start "" "%~dpn02.bat"
    goto:eof
     
    :exit
    pause

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 16:26 10-03-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kermit
    Ну не знаю, как насчёт красоты, можно так:

    Код:
    start "" /MIN 1.bat
    echo нажимайте любую клавишу и противный звук перестанет давить на ваш моск!
    pause> nul
    taskkill /F /FI "WINDOWTITLE eq dfgh" /im cmd.exe /T

     
     
      1.bat

    Код:
    title dfgh
    :beep
    sleep 10
    goto :beep

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 17:21 10-03-2010 | Исправлено: king_stiven, 17:29 10-03-2010
    kermit

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

    как отформатить переносной винт в NTFS с подавлением всех вопросов?
     
    Пишу в скрипте:

    Код:
     
    format E: /V:TEST /FS:NTFS /Q

     
    сначала говорит "Введите метку тома для диска E:", потом просит нажать "Y", если уверен.
     
    есть сторонние утилиты типа fat32format, но для NTFS?

    Всего записей: 463 | Зарегистр. 01-10-2003 | Отправлено: 19:20 10-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