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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KKrack
    Ответ не совсем по теме, я когда-то писал прогу на Autoit, именно для подобных целей.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 19:11 05-10-2007
    KKrack

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

     
    ОГРОМНОЕ СПАСИБО ВСЕМ!!!
     
    Даже выбор появился, все попробую по очереди, что-нибудь оставлю.
    Надеюсь, вопросов по данной теме больше не возникнет.

    Всего записей: 9 | Зарегистр. 04-10-2007 | Отправлено: 20:40 05-10-2007
    01MDM



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

    Код:
     
    %SystemRoot%\System32\cmd.exe /c относительный\путь\к\программе
     

     
    И поменять ярлык. Особо не тестил, но программа запускалась на двух разных компьютерах. Буква для носителя назначена разная.
     
    Добавлено:
    Edited:

    Цитата:
    %SystemRoot%\System32\cmd.exe /c start "" относительный\путь\к\программе


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:21 05-10-2007
    KKrack

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Окончательный, IMHO, вариант, немного доработанный , предложенный Maza Faka:  
     
    Код:
    @Echo Off
    Set drive=%~d0
    Echo Select volume %drive% > test.txt
    Echo Assign letter X>> test.txt
    Start /min DiskPart /s test.txt
    PAUSE                                   \ не получалось без нее(мож, не успевал)
    Start %~d0\LABELS\
    Tskill DiskPart.exe                   \ чтоб не мешался
    Del test.txt                              \ чтоб при следующем сеансе на этой же машине  
                                                  \предыдущая команда выполнялась
    exit
     
    Полностью рабочий, завтра потестю на более глючных компах, может, че вылезет...
    Подозреваю, что в консоли уравления может старую букву оставить, но в проводнике нормально было, и пути ярлыков работали(на работе сегодня смотрел). На домашнем все четко.
     
    Задача решена.
     
     
     
    Добавлено:
    01MDM
     
    Такой вариант уже рассматривал, теряется иконка у ярлыка, но работает. можно, когда немного, и все на виду, а я с цветными-то теряюсь..
     
    Сорри, не так у меня было..
    %windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\путь"
     
    графа"Рабочая папка" пуста, чтобы путь читался от ярлыка
     
    Тоже работает, но теряется иконка.

    Всего записей: 9 | Зарегистр. 04-10-2007 | Отправлено: 01:29 06-10-2007 | Исправлено: KKrack, 01:44 06-10-2007
    pom205

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как произвести поиск файла по содержимому - наличию  определённой последовательности на заданном смещении. Нужно для определения типов файлов с неправильными расширениями.

    Всего записей: 555 | Зарегистр. 03-06-2006 | Отправлено: 12:24 06-10-2007
    NIKZZZZ



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

    Цитата:
    Как произвести поиск файла по содержимому - наличию  определённой последовательности на заданном смещении.

    Средствами дос - можно использовать debug.exe - выделить нужную часть тестируемого файла с определенным смещением и сохранить в виде отдельного файла , который потом сравнить с шаблоном.
     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:51 06-10-2007
    pom205

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Мне нужно найти все архивы и бинарники определённых типов в кэше локального прокси "HandyCache". Как это можно сделать? Выбрать из сотен тысяч гзипованных файлов, скриптов и илллюстраций?

    Всего записей: 555 | Зарегистр. 03-06-2006 | Отправлено: 19:35 06-10-2007
    Bosika



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые гуру есть задача:
    медицынский кабинет, два компьютера  
    - один используется с обследовательским оборудованием, на который записываются результаты исследований в определённую директорию (C:\Source\Patient\) итог - несколько текстовых и один видеофайл.
    - второй компьютер, на который необходимо копировать эти данные и обрабатывать их и хранить. (C:\Basa\Patient\)
    - компьютеры соеденены сетевым кабелем и ресурсы расшарены.
    Вопрос - как лучше организовать копирование полученных данных обследования на компьютер, где будет храниться и обрабатываться информация. Интереснее было бы после каждого обследования и получения результата. копировать на другой компьютер, и что бы выводилось окно подтверждения. что идет копирование, или, что копирование произведено, и предлогалось очистить директорию, откуда была произведена передача данных.
    Если можно. то подробнее, но для человека имеющего познания в медицыне и в основах компьютера.

    Всего записей: 66 | Зарегистр. 19-11-2003 | Отправлено: 01:50 07-10-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Bosika
    Лучше Robocopy для твоей задачи не придумать, поищи в топике.

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



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Требуется решить вот такю задачу с помощью bat-файла:
     
    С недавних пор начал изучать ассемблер. Пишу в блокноте файлы ASM, и потом компилирую их в файлы COM с помощью Turbo Assembler 5.0 (TASM.EXE).
     
    Требуется написать файл compile.bat, который надо повесить на комбинацию клавиш ALT-F3 в Тотал Коммандере для файлов с раширением ASM.
     
    Файл следующего содеражния:
     

    Код:
     
    %COMMANDER_PATH%\Coding\TAsm\tasm.exe   [имя_файла].asm
    %COMMANDER_PATH%\Coding\TAsm\tlink.exe /t   [имя_файла].obj
    %COMMANDER_PATH%\Coding\TAsm\td.exe   [имя_файла].com
     

     
    В качестве переменной [имя_файла] должно подставляться имя текущего файла (файл под курсором в Тотал Коммандере) без расширения. Переменная %1 подставляет в командную строку имя файла с расширением, а это мне как раз не нужно.
     
    Практическая польза от такого батника - то, что можно одним махом скомпилировать исходник ASM и тут же отправить получившийся COM-файл в дебаггер.
     
    Как реализовать описанную мной задачу? Помогите!

    ----------
    AMD Ryzen7 5800X3D, ASUS STRIX X570-E, 32GB DDR4-3600 G.Skill, RX 7900XTX, Sams980PRO 1TB NVMe + Seagate IronWolf 4TB + WD Red 4TB, SB AE-9, 27" DELL S2721DGFA, Win10Pro(22H2)Ru

    Всего записей: 813 | Зарегистр. 10-09-2006 | Отправлено: 15:33 07-10-2007
    Elroir



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

    Цитата:
    Как реализовать описанную мной задачу?

    Примерно так:

    Код:
     
    @echo off
    if /i "%~x1"==".asm" (
    "%COMMANDER_PATH%\Coding\TAsm\tasm.exe" %~n1.asm  
    "%COMMANDER_PATH%\Coding\TAsm\tlink.exe" /t %~n1.obj  
    "%COMMANDER_PATH%\Coding\TAsm\td.exe" %~n1.com
    )
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:12 07-10-2007
    ZenitFan



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Elroir
     
    Большое спасибо за помощь! Батник работает так как надо!
     
    Одно уточнение:
    Можно ли сделать так, чтобы при запуске данного bat-файла открывалась консоль именно со шрифтом Lucida Console размером 18 (вместо стандартного Terminal маленького размера)? Что нужно для этого прописать внутри bat-файла?

    ----------
    AMD Ryzen7 5800X3D, ASUS STRIX X570-E, 32GB DDR4-3600 G.Skill, RX 7900XTX, Sams980PRO 1TB NVMe + Seagate IronWolf 4TB + WD Red 4TB, SB AE-9, 27" DELL S2721DGFA, Win10Pro(22H2)Ru

    Всего записей: 813 | Зарегистр. 10-09-2006 | Отправлено: 18:08 07-10-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ZenitFan
    Изнутри батника это сделать нельзя. Нужно менять свойства окна cmd.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:17 07-10-2007
    P1lot

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У нас тут образовалась такая задачка...
    Существует файл navigation.dat, который открывается в ворд паде и содержит множество строк типа:

    Код:
    4   53.740578 -002.905403     55 10990  18     251.105 IWQ  EGNO 26 ILS-cat-I
    12  62.298658 -150.105592    360 11620 130   0.000 TKA  Talkeetna VOR-DME

     
    и так далее...
     
    Рядом лежит папка с подпапками, в которых есть тоже файлы navigation.dat, но с некоторыми поправками.
     
    Задача в том, чтобы в основной navigation.dat перенести содержимое других файлов с заменой схожих строчек или с добавлением новых строчек из тех файлов.
     
    Например:
    В основном navigation.dat строчка  

    Код:
    12  62.298658 -150.105592    360 11620 130   0.000 TKA  Talkeetna VOR-DME

     
    должна замениться полностью на строчку из дополнительного navigation.dat

    Код:
    12  63.000000 -149.000000    360 11620 130   0.000 TKA  Talkeetna VOR-DME

     
    Замена должна производиться при совпадении от 8-го и далее слова в строчках, а если нет совпадения то полностью добавить новую строчку.
    Вероятно это реализовать с помощью батника невозможно или я ошибаюсь?
     

    Всего записей: 1 | Зарегистр. 08-10-2007 | Отправлено: 02:36 08-10-2007
    Elroir



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

    Цитата:
    Вероятно это реализовать с помощью батника невозможно или я ошибаюсь?

    Можно - но очень муторно, сложно и долго. Если есть какая-нибудь другая возможность, кроме  батника - лучше воспользоваться ей.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:57 08-10-2007 | Исправлено: Elroir, 04:19 08-10-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Читаю описание команды "IF" в хэлпе винды....
    "...Using the else clause  
    You must use the else clause on the same line as the command after the if. For example:
     
    IF EXIST FileName. (
    del FileName.
    ) ELSE (
    echo FileName. missing.
    )
    ..."
     
    И одного не могу понять - зачем стоят точки после filename?
    Что они делают?

    Всего записей: 238 | Зарегистр. 19-08-2007 | Отправлено: 09:20 08-10-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Filosofem
    Обычная точка в обычном смысле - к синтаксису IF никакого отношения не имеет

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 09:36 08-10-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а к синтаксису cmd.exe и батников она имеет отношение?
    Почему добавление точек в конце имени файла не меняет работу кода?
    Почему не создаются файлы и папки с точкой на конце?
     
    И какой смысл в данном примере ставить эти точки, если они не влияют на выполнение кода?
    А если влияют, то как?
     
    Звиняйте если тупые вопросы, ненавижу документацию от мелкософта, не понятно где искать ответы на эти вопросы.

    Всего записей: 238 | Зарегистр. 19-08-2007 | Отправлено: 09:51 08-10-2007
    KapralBel



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

    Цитата:
    Почему добавление точек в конце имени файла не меняет работу кода?
    Почему не создаются файлы и папки с точкой на конце?

    Учим основы...
    Последняя точка отделяет имя (возможно тоже с точками) от расширения - поэтому и не получится
     

    Цитата:
    И какой смысл в данном примере ставить эти точки, если они не влияют на выполнение кода?  

    Не знаю, думаю и в М$ тоже не знают
     

    Цитата:
    Звиняйте если тупые вопросы, ненавижу документацию от мелкософта, не понятно где искать ответы на эти вопросы.

    Ну по комм.файлам - у них все толково
     
     

    Цитата:
    а к синтаксису cmd.exe и батников она имеет отношение?
    как любая другая буква в имени файла

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:14 08-10-2007
    NIKZZZZ



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

    Цитата:
    архивы и бинарники определённых типов в кэше локального прокси "HandyCache". Как это можно сделать? Выбрать из сотен тысяч гзипованных файлов

    Боюсь, что батник-неудачный выбор. Даже если его написать, такая программа будет работать слишком долго.
    Лучше использовать более развитые языки - WSH, Autoit и т.п.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 10:49 08-10-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 101 102 103

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru