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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    rosalin



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    теперь выдает  
    вот батник
     
    :SETUP
    if exist "%programfiles%\RealVNC\VNC4\unins000.exe" (    
       "%programfiles%\RealVNC\VNC4\unins000.exe" /VERYSILENT  
    )
    endif  
     
    setup.exe /VERYSILENT
     
     
    "endif" не является внутренней или внешней
    что подправить

    Всего записей: 2588 | Зарегистр. 15-04-2003 | Отправлено: 17:58 17-08-2007
    NIKZZZZ



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

    Цитата:
    "endif" не является внутренней или внешней

    В батниках нет никакого endif. Смотри if /?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:10 17-08-2007
    VETACH



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

    Всего записей: 9 | Зарегистр. 19-07-2007 | Отправлено: 19:07 17-08-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    rosalin
    Упс.. сорри
    Так и знал что не надо писать 2 программы одновременно на разных языках
     
    VETACH
    Есть общая автозагрузка, отрабатывающая у всех пользователей

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 19:53 17-08-2007
    VETACH



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    я уже разобрался как ставить в автозагрузку. Вот только незнаю как правильно писать имена папок. К примеру автозагрузка находится в  
    C:\Documents and Settings\Администратор\Главное меню\Программы\Автозагрузка
    но как правильно писать имена папок?? , поскольку надо писать под кодировкой DOSa,
    а я незнаю как. Мож кто-нить посоветует текстовый редактор или еще что-нибудь для того чтобы переводить нормальное имя файла или папки в кодировку DOS ???
    Если кто знает или подскажет, буду благодарен )))
    Жду ответа

    Всего записей: 9 | Зарегистр. 19-07-2007 | Отправлено: 00:47 18-08-2007
    KapralBel



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

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 01:16 18-08-2007
    Maza Faka



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

    Цитата:
    :SETUP  
    if exist "%programfiles%\RealVNC\VNC4\unins000.exe" (    
       "%programfiles%\RealVNC\VNC4\unins000.exe" /VERYSILENT    
    )  
    endif  
    setup.exe /VERYSILENT

     
    Да, endif здесь явно лишний , так же, установка проги у тебя начнётся не дождавшись деинсталляции. Попробуй так:

    Код:
     
    :SETUP
    if exist "%programfiles%\RealVNC\VNC4\unins000.exe" (
    start /wait "%programfiles%\RealVNC\VNC4\unins000.exe" /VERYSILENT
    )
    setup.exe /VERYSILENT
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:50 18-08-2007
    euheny



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А не кто не знает реальную замену CMD.EXE ?
    Желателено с поддержкой Unicode (как минимум UTF-16)

    Всего записей: 4052 | Зарегистр. 22-11-2006 | Отправлено: 08:13 18-08-2007
    NIKZZZZ



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

    Цитата:
    А не кто не знает реальную замену CMD.EXE ?
    Желателено с поддержкой Unicode

    А кто сказал , что CMD.EXE его не поддерживает ?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 08:21 18-08-2007
    euheny



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    У тебя запускаются бат-файлы в UTF-16 ?
     

    Всего записей: 4052 | Зарегистр. 22-11-2006 | Отправлено: 08:57 18-08-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    euheny
    А зачем нужны батники в UNI ?
    cmd /u - вывод результатов в UNI.
    Например, та-же встроенная команда Type прекрасно  понимает Unicode.
     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 09:12 18-08-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    euheny
    А так же команда more отлично понимает unicode

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:05 18-08-2007
    MsdLamer

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

    Цитата:
    @echo off  
    setlocal  
    set "sum=0.00"  
    for /f %%a in (1.txt) do call :math %%a  
    set /p=%sum%<nul>2.txt  
    goto :EOF  
    :math  
    set "first=%sum%"  
    set "second=%1"  
    for /f "delims=. tokens=1,2" %%a in ("%first%") do (set "int1=%%a" & set "frac1=%%b")  
    for /f "delims=. tokens=1,2" %%a in ("%second%") do (set "int2=%%a" & set "frac2=%%b")  
    echo frac1=%frac1%  
    echo frac2=%frac2%  
    if %frac1% LSS 10 set "frac1=%frac1:~-1%"  
    if %frac2% LSS 10 set "frac2=%frac2:~-1%"  
    set /a "fr_sum=frac1+frac2"  
    set /a "int_sum=int1+int2"  
    if %fr_sum% GTR 99 (  
    set /a "int_sum+=1"  
    set "fr_sum=%fr_sum:~1%"  
    )  
    set "sum=%int_sum%.%fr_sum%"

     
    считает сумму чисел в файле с сотыми долями, но вот проблемка, начал складывать к примеру
     
    1.00
    1.05
     
    результат получил 2.5 это же не верно, должно быть 2.05. Подскажите как исправить. Спасибо.

    Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 12:01 18-08-2007
    Maza Faka



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

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:46 18-08-2007
    01MDM



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

    Код:
     
    @echo off
    set SUM=0.00
     
    for /f %%i in ('dir /b ^*.txt') do (
        set file=%%i
        call:file_data
        call:math
        )
    echo %SUM%
    goto:eof
     
    :file_data
    for /f "tokens=1,2 delims=." %%i in ('echo %SUM%') do (
        set int_s=%%i
        set flo_s=%%j
        )
    if "%flo_s:~0,1%"=="0" (set "flo_s=%flo_s:~1,1%")
     
    ::==========================================
    :: Изменяемое условие поиска строки в файлах
    ::==========================================
    for /f "tokens=2,3 delims=. " %%i in ('type %file% ^| findstr /l "sum:"') do (
        set int_a=%%i
        set flo_a=%%j
        )
    ::
    ::==========================================
     
    if not defined flo_a (set "flo_a=0")
    if %flo_a% lss 10 (set "flo_a=%flo_a%0")
    if "%flo_a:~0,1%"=="0" (set "flo_a=%flo_a:~1,1%")
    goto:eof
     
    :math
    set /a int_SUM=%int_s%+%int_a%
    set /a flo_SUM=%flo_s%+%flo_a%
     
    if %flo_SUM% geq 100 (
        set /a flo_SUM-=100
        set /a int_SUM+=1
        )
     
    if %flo_SUM% lss 10 (
        set "flo_SUM=0%flo_SUM%"
        )
     
    set "SUM=%int_SUM%.%flo_SUM%"
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:26 18-08-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MsdLamer
    Задача по операциям  над  числами с фиксированной запятой сводится:
    Преобразованию числа в целое.

    Код:
    setlocal enabledelayedexpansion
    for /f "delims=. tokens=1,2" %%a in ("%a%") do (
    if "%%b"=="" (set "a=%%a00") else (set "tmp=%%b00" & set "a=%%a!tmp:~0,2!")
    )

    Преобразует %a% в целое. Два знака после запятой.
    123 -> 12300
    123. -> 12300
    123.4 -> 12340  
    123.45 -> 12345
    123.456 -> 12345
    Выполнение арифметического действия над преобразованными результатами и коррекцией:
    с=a+b
    c=a-b
    c=a*b/100 - умножение
    c=a*100/b - деление
    Обратное преобразование для вывода результата- поставить точку перед двумя последними цифрами.

    Код:
    set c=%c:~0,-2%.%c:~-2%

       
     
    Добавлено:
    Твой пример:

    Код:
    echo off
    setlocal enabledelayedexpansion
    set result=0
    set "sum=0"  
    for /f %%a in (1.txt) do (
      call :Add %%a
    )  
     set Sum=%Sum:~0,-2%.%Sum:~-2%
    echo %Sum%
    goto :eof
     
    :Add
    set Result=%1
    for /f "tokens=1,2 delims=." %%i in ("%Result%") do (
    if "%%j"=="" (set "Result=%%i00") else (set "tmp=%%j00" & set "Result=%%i!tmp:~0,2!")
    )
    set /a sum=%sum%+%Result%
    goto :eof


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 13:28 18-08-2007
    dominiksus



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    подскажите можно ли средствами винды конвертировать много файлов BMP в папке в JPG в ту же папку с такими точно именами файлов но только чтоб Жипег расширение было, а если не средствами виндоус, то если другой програмой (proga.exe), какова структура батфайла?

    Всего записей: 119 | Зарегистр. 11-08-2007 | Отправлено: 19:04 18-08-2007
    Maza Faka



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

    Код:
     
    @echo off
    for %%a in (*.bmp) do proga.exe "%%a" "%%~na".jpg
     

    Только вот про утилиту не спрашивай, не знаю где взять

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 19:25 18-08-2007 | Исправлено: Maza Faka, 19:28 18-08-2007
    dominiksus



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maza Faka
    утилита есть, convert, работает из ком. строки, так как ее конкретно присобачить если у нее такой вид запуска : convert file.bmp file.jpg ?
    так будет правильно? :

    Код:
    for %%a in (*.bmp) do convert "%%a" "%%~na".jpg

    Всего записей: 119 | Зарегистр. 11-08-2007 | Отправлено: 19:33 18-08-2007
    Maza Faka



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

    Цитата:
    так будет правильно?

    Да, попробуй, для начала на паре файлов.
     
    Нашёл я утилиту IrfanViewer, конвертит из ком. строки:

    Код:
     
    @echo off
    for %%a in (C:\Test\*.bmp) do "%ProgramFiles%\IrfanView\i_view32.exe" "%%a" /convert="%%~dpna.jpg"
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 19:48 18-08-2007
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru