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

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

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

vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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-файлах (часть 1)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    StanislavG



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    У меня есть вопрос вот кусок лога:
       
       arj a c:\tcpfoss.452\jnin\jour01.arj  c:\tcpfoss.452\"02421805.RTF"  
       
    А вот как это выглядет в батнике:
     
    @echo off
    setlocal
    set dt=%date%
    FOR %%I IN (*.old,*.rsa,*.ind,*.key,*.pud,*.rsa,*.lo1,*.er1,*.err,*.nbu,*.pub,*.new,*.log) DO call :finddate "%%I" %dt:~0,2% %dt:~3,2% %dt:~6,4%
     
    goto :EOF
     
    :finddate
    for /F "usebackq tokens=1,2,3,4 delims=. " %%A IN (`"dir /T:C %1 | find %1"`) DO call :test %%A %%B %%C %1 %2 %3 %4
    goto :EOF
     
    :test
    rem File's date
    set fd=%1
    set fm=%2
    set fy=%3
    rem Current date
    set curd=%5
    set curm=%6
    set cury=%7
    set /a prevd=%curd%-1
    set prevm=%curm%
    set prevy=%cury%
    set prevye=%cury%
    if %curm%==12 (set prevme=11& set days=30)
    if %curm%==11 (set prevme=10& set days=31)
    if %curm%==10 ( set prevme=09& set days=30)
    if %curm%==09 ( set prevme=08& set days=31)
    if %curm%==08 ( set prevme=07& set days=31)
    if %curm%==07 ( set prevme=06& set days=30)
    if %curm%==06 ( set prevme=05& set days=31)
    if %curm%==05 ( set prevme=04& set days=30)
    if %curm%==04 ( set prevme=03& set days=31)
    if %curm%==03 ( set prevme=02& set days=28)
    if %curm%==02 ( set prevme=01& set days=31)
    if %curm%==01 ( set prevme=12& set days=31& set /a prevye=%prevy%-1)
    if %prevd% LEQ 0 (
    set /a prevd=%days%+%prevd%
    set prevm=%prevme%
    set prevy=%prevye%)
    set match=true
    if not "%fd%"=="%prevd%" ( set match=false)
    if not "%fm%"=="%prevm%" ( set match=false)
    if not "%fy%"=="%prevy%" ( set match=false)
    if "%match%"=="true" (  
     
    arj a c:\tcpfoss.452\jnin\jour%prevm%.arj  c:\tcpfoss.452\%4
    )
     
    Вопрос такой как можно убрать кавычки в строке архиватора в этом эпизоде  
     
               c:\tcpfoss.452\"02421805.RTF"  
     
      т.к. архиватор не архивирует

    Всего записей: 34 | Зарегистр. 10-01-2007 | Отправлено: 10:00 18-01-2007
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    всем добрый день/вечер
     
    подскажите пожалуйста как продолжить выполненние CMD
    есть необходимость обновить клиента SMS, а именно удалить и установить поновой
    1.cmd

    Код:
    start /wait \\smssrv\smsclient\i386\ccmclean.exe /client /q
    \\smssrv\smsclient\i386\ccmsetup /source:\\smssrv\smsclient\i386 smssitecode=hd1

     
    первая строка отрабатывает, до второй дело не доходит поскольку удаляется папка  
    C:\WINDOWS\system32\CCM\Cache\HD10000F.10.System\  в которой находится сам 1.cmd
     
    спасибо
    Евгений

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 10:27 18-01-2007
    rinrintaru

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, здесь уже было обсуждение, но как-то у меня не получилось. Можно ликбез для блондинок?
    Проблема с путями или с синтаксисом. Нужно запустить exe из Program Files. Ну например totalcmd
    set проверила, пишет:
    ProgramFiles=I:\Program files
     
    пишу  
    start %Program files%\totalcmd\totalcmd.exe
     
    пишет  
    Windows не удалось найти 'I:\Program'
     
    Читала, что надо кавычки ставить, только не понимаю, что именно надо ставить в кавычки- весь путь или только ту часть, которая с пробелами. Попробовала с помощью set поставить и так, и так, но  результат тот же - не удалось найти  
     
    Помогите, плиз!
     
    И еще вопрос: имеют ли значение для синтаксиса bat строчные и прописные буквы? Пока стараюсь соблюдать точность написания, но геморройно это
     

    Всего записей: 24 | Зарегистр. 17-11-2006 | Отправлено: 13:52 18-01-2007
    the13th

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    rinrintaru
    В кавычки заключается полный путь.
    Регистр букв значения не имеет.
     
    Путь к Program files задаётся переменной %ProgramFiles% (без пробела).

    Всего записей: 19 | Зарегистр. 15-03-2005 | Отправлено: 14:04 18-01-2007
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Только работать будет вот так:
    Код:
    start /D"%Programfiles%\totalcmd" totalcmd.exe
    За подробностями - start /?

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 14:18 18-01-2007
    rinrintaru

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    start /D"%Programfiles%\totalcmd" totalcmd.exe
    не работает
     
    %ProgramFiles%
    не работает
    в переменных стоит ProgramFiles=I:\Program files
    при запуске %ProgramFiles%\... пишет "Не найдено 'I:\Program'
     
    Как переменные изменить?
    set ProgramFiles=I:\"Program files" помогает, но через какое-то время в переменных снова появляется ProgramFiles=I:\Program files

    Всего записей: 24 | Зарегистр. 17-11-2006 | Отправлено: 14:39 18-01-2007
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Что значит не работает?
    Файл I:\Program files\totalcmd\totalcmd.exe существует?
    И проверяешь как? Меню Пуск - выполнить - так работать не будет...
    Эта конструкция используется только внутри пакетных файлов - то есть с расширением bat или cmd

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 15:00 18-01-2007
    evgeni666



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    rinrintaru
    start "%Programfiles%\totalcmd\totalcmd.exe"
    так попробуй запускать

    Всего записей: 371 | Зарегистр. 22-12-2005 | Отправлено: 15:03 18-01-2007
    rinrintaru

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

    Цитата:
     
    Что значит не работает?
    Файл I:\Program files\totalcmd\totalcmd.exe существует?
    И проверяешь как? Меню Пуск - выполнить - так работать не будет...
    Эта конструкция используется только внутри пакетных файлов - то есть с расширением bat или cmd
     
     

     
    существует
    копирую строку в txt, сохраняю как bat, запускаю
    пишет F:\Мои документы\TOTALCMD.exe не является приложением Win32
    F:\Мои документы\ - папка, где лежит bat
     

    Цитата:
     
     
    start "%Programfiles%\totalcmd\totalcmd.exe"

     
    выдает консоль, в ней  
    F:\Мои документы>
     
    и все!
     
    Может, как-то переменные изменить?

    Всего записей: 24 | Зарегистр. 17-11-2006 | Отправлено: 15:18 18-01-2007 | Исправлено: rinrintaru, 15:19 18-01-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yurkesha
    имхо после ключа надо ставить пробел, иначе система не определит где ключ а где путь
    так что, rinrintaru, вот так пускай
    Код:
    start "" "%Programfiles%\totalcmd\totalcmd.exe"

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 15:22 18-01-2007 | Исправлено: Nagual, 15:28 18-01-2007
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Я таки наверное проверил перед тем как писать
    Проверь и ты...
     
    rinrintaru
    тогда результат выполнения команды
    Код:
    set prog
    в студию...

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 15:28 18-01-2007 | Исправлено: yurkesha, 15:34 18-01-2007
    rinrintaru

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

    Цитата:
     
     start "" "%Programfiles%\totalcmd\totalcmd.exe"

     
    Заработало!!!! Сенкс
     
    А теперь объясните, пожалуйста, "для блондинок", зачем в этом коде ставятся двойные кавычки перед путем?
     
    ЗЫ Самое обидное, что из консоли оно без проблем запускается - хоть с кавычками, хоть без, хоть с "start", хоть без "start"... А из bat и cmd с такими вот приколами
     
    Добавлено:
     

    Цитата:
     тогда результат выполнения команды
    Код:
    set prog
    в студию...

     
    ProgramFiles=I:\"Program files"

    Всего записей: 24 | Зарегистр. 17-11-2006 | Отправлено: 15:39 18-01-2007
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Если уж так тяжело набрать start /? то вот результат выполнения: Подробнее...
     
    А вот генерация хелпов по всем командам консоли: Подробнее...  
    За нее благодарим Jon_Dow

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 15:44 18-01-2007 | Исправлено: yurkesha, 15:58 18-01-2007
    rinrintaru

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

    Цитата:
     
    Если уж так тяжело набрать start /?  

     
    Ну неужели думаете, что не читала? Еще до того, как этот форум нашла, пыталась сама разобраться. Только вот где там сказано, почему вроде бы правильно набранный путь, обращающийся к переменным винды, имеющим в своем значении пробелы, не будет запускаться?

    Всего записей: 24 | Зарегистр. 17-11-2006 | Отправлено: 16:08 18-01-2007
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    cmd /? - почти в самом конце... Это общесистемная фича...

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 16:44 18-01-2007
    Elroir



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

    Цитата:
    Вопрос такой как можно убрать кавычки в строке архиватора в этом эпизоде    


    Код:
    arj a c:\tcpfoss.452\jnin\jour%prevm%.arj  c:\tcpfoss.452\%~4

     
    rinrintaru

    Цитата:
    А теперь объясните, пожалуйста, "для блондинок", зачем в этом коде ставятся двойные кавычки перед путем?

    Команда start, воспринимает все, что находится в первых кавычках (если не используется какой-нибудь ключ), как заголовок нового окна CMD. Поэтому, если запускать start "program folder\program.exe" - открывается новое консольное окно с заголовком "program folder\program.exe". Когда после start идут пустые кавычки - это принимается за заголовок, а все следующие параметры в кавычках воспринимаются уже нормально.    

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:01 18-01-2007
    Higher



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Извините за банальность, но трудно написать правильный запрос, от чего не найти желаемого.
     
    нужен простейший bat, который может заменять символы в файлах на другие символы, с учётом того, что файлов много (сразу все, а не каждый по отдельности):
     
    например 1_-_2.mp3
    вместо _ необходим пробел
     
    можно ли сделать автоматизацию для всех файлов сразу, скажем, если все они будут в одной папке?
     
    Спасибо.

    Всего записей: 1986 | Зарегистр. 08-10-2003 | Отправлено: 23:36 18-01-2007 | Исправлено: Higher, 23:37 18-01-2007
    Elroir



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

    Цитата:
    например 1_-_2.mp3  
    вместо _ необходим пробел  


    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    for %%A in (*.*) do (
    set name=%%~nA
    set name=!name:_= !
    ren "%%A" "!name!%%~xA"
    )
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:12 19-01-2007
    rinrintaru

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо всем, кто откликнулся! Меня в большей степени сбило то, что я все команды проверяла в консоли. В консоли работают, а из файла нет. Поэтому я грешила в бОльшей степени на путь (запуск идет с разных системных дисков, а запускаемый файл на том же, откуда запускается консоль), либо уже полностью начиналось обострение тупости

    Всего записей: 24 | Зарегистр. 17-11-2006 | Отправлено: 02:09 19-01-2007
    Strange



    тутошние мы
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Требуется синхронизация подпапок и файлов с сетевого диска на локальную машину. Можно ли как-то решить эту проблему? или заставить xcopy не перезаписывать имеющиеся файлы?

    ----------
    В вашу pедакцию pазные кpетины пишут всякую чушь. Вот и я тоже pешил.
    --
    Ежели на форуме не будет ни одного матерного слова, то мое мнение так и останется невыраженным

    Всего записей: 2113 | Зарегистр. 07-02-2002 | Отправлено: 12:44 19-01-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 100

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru