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

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

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

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    zherebcov

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо.
    Я правильно понял: то что в скобках выполнится как раз n раз и батник продолжит работу после скобки?
    Т.е. если n= 5 батник прокрутит 5 раз - () ,  и падает дальше?
     

    Код:
     
    setlocal
    @echo.
    set tm=%date:~6,4%-%date:~3,2%-%date:~0,2%
    :restart
    cls
    @echo  %tm%
    time /t
    set norders=
    set drive=
    set order=
    set hddl=
    set answer=
    set n=
    @echo.
    set /p n="Введите количество заказов:"
    FOR /L %%G IN (1,1,%n%) DO (
    :restart2
    cls
    @echo Количество заказов: %n%
    @echo  %tm%
    time /t
    set /p drive="Введите Букву диска для -ой последовательности(только букву, без двоеточия):"
    @echo.
    vol %drive%:
    @echo.
    set /p answer="Данные верны? [y/n]:"
    if not "%answer%" == "y" goto :restart2
    @echo.
    set /p order="Пожалуйста, введите номер заказа для N-ой последовательности:"
    @echo.
    @echo Помните, при указании метки диска номер заказа не будет учитываться!
    @echo Введите метку переносного диска по МЧ (при записи группы заказов).
    @echo ВАЖНО! Параметр метки регистрозависимый!
    @echo.
    set /p hddl="Метка для N-ой последовательности:"
    @echo.
    @echo Формирование файла запуска для N-ой последовательности...
    @echo "%CD\cdrec.exe" -orderno=%order% -hddlabel=%hddl% -drive=%drive%: >> bat.bat
    @echo N=%n%
     
    )
     
    pause
    @echo.
    @echo Запись заказа №%order% на носитель %drive%: завершена.
    @echo.
    pause
    exit

     закрывается на ошибке: непредвиденное появление.

    Всего записей: 3 | Зарегистр. 22-05-2011 | Отправлено: 19:35 22-05-2011
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто-нибудь подскажет есть ли в win7 встроенная утилита чтобы взять что-нибудь из буфера обмена? Есть CLIP, но это наоборот вставка в буфер, нужен обратный процесс.
    Хочу создать ярлык который открывал бы мне в проводнике папку, путь которой находится в буфере обмена.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 20:40 22-05-2011 | Исправлено: Joo1z, 09:40 23-05-2011
    wolf0425



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

    Цитата:
     закрывается на ошибке: непредвиденное появление.
    логично, метки внутри скобок запрещены.
    выноси в подпрограмму.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 23:23 22-05-2011
    pfr



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    res2001
    Elroir
    ну понятно дело, что и "Desкtop" на "Рабочий стол" поменял и всё остальное тоже ...

    ----------
    ... надышаться можно только ветром ...

    Всего записей: 626 | Зарегистр. 16-12-2003 | Отправлено: 09:07 23-05-2011
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Чем бы из комстроки переключить язык в английскую раскладку ?
    На стандартных XP/win7

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 09:11 23-05-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425
    Может через nircmd засылать нужную комбинацию клавиш в собственное окно?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:00 23-05-2011
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    pfr
    А что именно не работает? Выдается какая-нибудь ошибка?
    Немного изменил код:

    Код:
     
    @echo off
    setlocal
    rem chcp 1251
    call :setUsersFolder "%userprofile%
    for /f "tokens=*" %%a in ('dir /ad /b "%usersFolder%"') do (
      if exist "%usersFolder%\%%a\Desktop\name.lnk" (
       del /q "%usersFolder%\%%a\Desktop\name.lnk"
       copy "\\xxx\new_name" "%usersFolder%\%%a\Desktop\"  
      )
    )
    goto :EOF
    :setUsersFolder
    set "usersFolder=%~dp1"
    set "usersFolder=%usersFolder:~0,-1%"
     

    Опять же - меняешь на свои названия. Если батник не понимает русские названия ("Рабочий стол") - убери в третьей строчке слово "rem".

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:40 23-05-2011
    xq



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как в зависимости от версии win заставить батник выполнять команду.
    Например, если XP, то одна команда, а если виста или 7-ка - другая
    Спасибо.

    Всего записей: 674 | Зарегистр. 05-10-2010 | Отправлено: 15:00 23-05-2011
    Froz



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

    Код:
     
    @echo off
    cls
    echo.
    :: Определяем версию Windows
    for /f "tokens=4 delims=]     " %%v in ('ver') do set v=%%v
    if not %v:~1,1%==. for /f "tokens=5 delims=]     " %%v in ('ver') do set v=%%v
    if %v%==4.0.1381 echo OS: Windows NT 4.0 (v%v%)
    if %v%==5.0.2195 echo OS: Windows 2000 (v%v%)
    if %v%==5.1.2600 echo OS: Windows XP (v%v%)
    if %v%==5.2.3790 echo OS: Windows Server 2003 (v%v%)
    if %v%==6.0.6000 echo OS: Windows Vista (v%v%)
    if %v%==6.0.6001 echo OS: Windows Vista SP1 (v%v%)
    if %v%==6.1.7201 echo OS: Windows 7 (v%v%)
    if %v%==6.1.7600 echo OS: Windows 7 (v%v%)
    if %v%==6.1.7601 echo OS: Windows 7 SP1 (v%v%)
    echo.
    pause
     

     
    разумеется, командой может быть не только 'echo' =)

    Всего записей: 161 | Зарегистр. 03-02-2004 | Отправлено: 15:40 23-05-2011
    xq



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

    Цитата:
    разумеется, командой может быть не только 'echo' =)  


    Всего записей: 674 | Зарегистр. 05-10-2010 | Отправлено: 15:48 23-05-2011 | Исправлено: xq, 15:50 23-05-2011
    Joo1z



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

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 15:50 23-05-2011 | Исправлено: Joo1z, 15:51 23-05-2011
    A1exSun



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Напишите пожалуйста батник:
    1. Скопировать program.exe из текущей директории в "стандартная_папка_програм/test/program.exe"
    2. Внести в реестр чтоб на правой клавише контекстного меню файлов любого типа был пункт "протестировать" и он запускал "стандартная_папка_програм/test/program.exe -путь_к_файлу"
     
    И еще один для отмены этих действий.

    Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 18:58 23-05-2011 | Исправлено: A1exSun, 19:01 23-05-2011
    lorents



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

    Цитата:
    zc:# zm:# zs:# fs:# f:# IDAT=# file=#

    где # - некие числа, при этом все они разные.
     
    подскажите, пожалуйста, как можно узнать значения чисел при zm: и zs: ?

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 19:32 23-05-2011 | Исправлено: lorents, 19:32 23-05-2011
    01MDM



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

    Код:
     
    @echo off
    setlocal
     
    set "str=zc:1 zm:2 zs:3 fs:4 f:5 IDAT=6 file=7"
     
    for /f "tokens=2,3" %%i in ( "%str::==%" ) do (
     
        1>nul set "%%i"
        1>nul set "%%j"
     
    )
     
    echo %zm%
    echo %zs%  
     



    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:38 23-05-2011 | Исправлено: 01MDM, 20:39 23-05-2011
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    Код:
    for /f "tokens=4,6 delims=: " %%a in (file.txt) do (echo "%%a" "%%b")

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 20:52 23-05-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    то что надо, спасибо. И еще один момент, не подскажешь, как сделать если у меня текстовой файл, и там эта сточка лежит неизвестно где?
     
    Добавлено:
    Nagual
    и тебе спасибо, но вопрос тот же, я не знаю где эта сточка находится.

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 20:57 23-05-2011
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    кинул бы файл куда нить, а то вслепую тяжко работать)

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 21:05 23-05-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    не подумал об этом
    http://rghost.ru/7603631

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 21:12 23-05-2011 | Исправлено: lorents, 21:13 23-05-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    Найти ее, что-нибудь:

    Код:
     
    @echo off
    setlocal
     
    for /f "tokens=*" %%i in (' findstr /b "zc:.*" 1.txt ') do set "str=%%i"
     
    ...  
     



    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:17 23-05-2011
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    Цитата:
    у меня текстовой файл, и там эта сточка лежит неизвестно где
    Ну отпарси файл отфильтровав его по конвееру на предмет включения подстрок через FIND или FINDSTR(для FINDSTR можно регулярку задействовать).
     
     
     
    Добавлено:
    01MDMну что-то в этом роде - хотя заложиться на zc: в начале строки это вряд ли достаточно...
     
    Добавлено:
    Если не серьезная регулярка то как минимум надо пустить конвеером последовательный отбор всех постоянных лексем из выражения zc:# zm:# zs:# fs:# f:# IDAT=# file=

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 21:24 23-05-2011
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru