Ответы пользователя по тегу cmd/bat
  • Как сделать в Bat-нике при нажатии 1 действие, при втором нажатии 2 действие?

    @res2001
    Developer, ex-admin
    Тут придется усложнить алгоритм немного - надо же как-то отличать первый запуск от второго.
    Можно, например, проверять существование некоторого файла-флага, который будет лежать где-то в заранее заданном каталоге. Если файла-флага нет - считаем, что это первый запуск: выполняем первую команду и создаем файл-флаг. Если файл уже существует, то считаем, что это второй запуск: выполняем вторую команду и дополнительно можно удалять файл-флаг, тогда следующее нажатие будет считаться снова первым. И т.д. по кругу.
    В случае использования файла-флага содержимое файла не важно, достаточно проверять его существование.

    Если захотите добавить еще вариантов, то можно в файл записывать номер выбранного действия и проверять уже не просто существование файла, а читать цифру из файла и в соответствии с ней выполнять действия.

    Можно вместо файла использовать какой-то параметр в реестре.

    Все это можно сделать на батниках.
    Ответ написан
    Комментировать
  • Можно ли получать каталоги по FTP через CMD?

    @res2001
    Developer, ex-admin
    Команда ftp поддерживает скрипты, которые можно передать команде через опцию -s.
    Скрипт просто содержит список стандартных команд ftp, которые нужно выполнить.

    Можно, например, одним скриптом ftp получить список файлов в каталоге.
    Затем этот список уже батником разобрать, вытащив из него отдельные имена файлов и сформировать второй скрипт по загрузке этих файлов.
    Все это думаю можно упаковать в один батник.

    Начать стоит с запуска в консоли ftp и сделать то что вы хотите руками. Заодно освоите команды ftp и разберетесь, что писать в ftp-скрипты.
    Ответ написан
    Комментировать
  • Как реализовать Оператор OR в команде FOR?

    @res2001
    Developer, ex-admin
    в forе проверяйте текущий файл только на вариант SEND_2 и сразу делайте переход, если из forа выйдет без перехода - значит это COPY_2.
    Ответ написан
  • Почему при работе батника не отображается результат поиска файла?

    @res2001
    Developer, ex-admin
    Попробуйте такой вариант цикла в searchdone: for /f "usebackq delims=" %%I in ("%tempfile%")

    Согласен с pumpkinm, на счет выполнения вложенного cmd. Возможна ситуация, что на момент выполнения чтения файла с результатом, этот файл все еще захвачен процессом вложенного cmd и type не может его прочитать.
    Ответ написан
  • Как получить список подпапок и удалить одну из них?

    @res2001
    Developer, ex-admin
    Цикл в батниках это for. Есть специализированные циклы (смотрите параметры for) для обхода папок и файлов.

    Так же можно получить список файлов с помощью dir. Опциями dir можно ограничить вывод например только файлами (dir /a-d) или только папками (dir /ad), задать сортировку и т.п. Вывод можно прогнать через фильтр findstr или find (dir ... | findstr "filtr string) и это все завернуть в for /f для разложения строк вывода на лексемы.

    Для справки:
    for /?
    dir /?
    findstr /?
    find /?
    if /?
    Ответ написан
    8 комментариев
  • Как сохранить текст из окна батника в txt файл?

    @res2001
    Developer, ex-admin
    Чтоб сохранить текст от ffmpeg надо делать так:
    ffmpeg -i vidov_ska4ali_1.mp4 -hide_banner -v verbose >output.txt

    Чтоб не запускать ffmpeg 2 раза я бы рекомендовал следующую схему:
    ffmpeg -i vidov_ska4ali_1.mp4 -hide_banner -v verbose >ffmpeg_out.txt
    for /f "tokens=3,4 delims=x" %%a in ('type ffmpeg_out.txt ^| findstr /C:"Stream.*Video" ') do (
      set "width=%%a"
      set "height=%%b"
    )
    ( type ffmpeg_out.txt & echo Width: %width% Height: %height%) >output.txt
    del /f/q ffmpeg_out.txt

    Т.е. через промежуточный файл, в котором сохраняется вывод ffmpeg.
    У вас значения width и height пустые, это значит, что скорее всего не правильно отрабатывает фильтр findstr, или "токенизация" в цикле.
    Ответ написан
    5 комментариев
  • Почему показывает в echo не верное значение?

    @res2001
    Developer, ex-admin
    1. Команда
    set /p filemp3sek=23
    Не присваивает переменной filemp3sek значение 23, как, возможно, вы думали. В данном случае 23 - это приглашение для ввода. Ключ /p заставляет команду set принять значение введенное с клавиатуры. Если ничего не ввести и нажать на Enter, то значение переменной не определено (переменная не существует).
    Просто уберите ключ /p

    2. Блок else является частью команды if. Но в батниках команда (любая) должна быть записана в одной строке. Но в команде if можно использовать круглые скобки, чтоб тело if можно было удобно записывать на разных строках, а не комкать все в нечитаемый текст в одной строке. Но как только вы пишете закрывающую блок скобку это действие завершается. Следовательно фразу else и следующие за ней ifы вместе со следующей открывающей скобкой надо писать в одной строке с предыдущей закрывающей скобкой. Работающий пример:
    if %filemp3sek% GEQ 1 if %filemp3sek% LEQ 10 (
    set skolkoRazUsaemJpg=1
    ) else if %filemp3sek% GEQ 11 if %filemp3sek% LEQ 15 (
    set skolkoRazUsaemJpg=2
    ) else if %filemp3sek% GEQ 16 if %filemp3sek% LEQ 20 (
    ...
    Ответ написан
    Комментировать
  • Как переименовать все файлы в нижний регистр с помощью cmd?

    @res2001
    Developer, ex-admin
    осложняется древним багом Windows

    Это не баг. Это фича. В WinAPI имена файлов регистронезависимые. Поэтому и нельзя переименовать, т.к. с точки зрения WinAPI это одно и то же имя.

    Вместо переименования с добавлением левого рандомного символа, предлагаю переносить в %TEMP% с одновременным изменением имени файла. Затем переносить обратно. Возможно переносить надо не в TEMP, а в другой каталог. Нужно что бы каталоги были на одном диске, чтоб не было реального копирования файлов. Может быть создавать тут же пустой временный каталог, так вы сможете гарантировать, что во временном каталоге не будет файлов с таким же именем.
    Ответ написан
    Комментировать
  • Как правильно написать скрипт регистрации comcntr.dll при авторизации в системе?

    @res2001
    Developer, ex-admin
    Не в курсе про 1С и comcntr, но regsvr32 - регистрирует СОМ объекты.
    Чтоб dll зарегистрировалась ключ /n не нужен.
    И dll никуда не загружается. Регистрация - это внесение некоторых данных о СОМ объекте, содержащемся в dll в реестр винды. Чтобы в дальнейшем винда смогла вызывать этот объект.
    Кроме регистрации regsvr32 выполняет еще DllInstall - тут могут быть выполнены еще какие-то произвольные действия, необходимые объекту.
    Вообще я бы сначала скопировал dll на локальный диск, и только потом регистрировал уже с локального диска.
    По ключам: запустите: regsvr32 /?
    Ответ написан
  • Как сделать Bat файл для пинга вводимого хоста?

    @res2001
    Developer, ex-admin
    set /p name="Input the host name: "
    ping %name%

    Даже не знаю, что тут комментировать :-)
    Дополнительную информацию смотрите тут:
    set /?
    ping /?
    Ответ написан
    1 комментарий
  • Как организовать ввод данных в bat-файле?

    @res2001
    Developer, ex-admin
    В составе putty есть клиент командной строки, там можно задать пароль в командной строке или сохранить в конфигурации putty и использовать конфигурацию для подключения.
    Для правки конфига, наверное, есть смысл конфиг просто скачать, локально его отредактировать, а затем записать новый. Для скачивания файлов из ком.строки в putty то же есть утилита.
    Ответ написан
  • Можно ли управлять всеми настройками windows через cmd?

    @res2001
    Developer, ex-admin
    Сейчас более актуально управление из powershell. По крайней мере сама микрософт сейчас активно posh продвигает.
    В cmd из коробки можно управлять много чем. Многие настройки винды лежат в реестре, а реестр править из cmd можно, правда применять большую часть настроек, внесенных правкой реестра на прямую, придется перезагрузкой компа.
    Выключить и перезагрузить комп можно командой shutdown.
    Ответ написан
    Комментировать
  • Как в bat файле удалить текущую директорию?

    @res2001
    Developer, ex-admin
    Текущий каталог вы не удалите, т.к. он занят вашим же процессом cmd.exe. Надо перейти в другой каталог, а затем уже удалять.
    Ответ написан
    Комментировать
  • Как создать BAT для пинга произвольных хостов?

    @res2001
    Developer, ex-admin
    В текстовом файле с расширением bat прописать 6 раз команду пинг с указанием произвольных хостов.
    Можно сделать в цикле с генерацией случайных чисел для IP адреса.
    Можно передавать хосты в параметре.
    Ответ написан
    Комментировать
  • Как запустить .bat файл через pywinauto?

    @res2001
    Developer, ex-admin
    Скорее всего напрямую батник вы запустить не сможете - это не исполняемый файл. Винда не умеет так как никсы.
    Вам нужно запускать батник как параметр cmd.exe.
    Например:
    cmd.exe /c G:\Documents\Python\auto_old_dump\dump\start.bat
    Ответ написан
    Комментировать
  • Как проверить ping до игрового сервера?

    @res2001
    Developer, ex-admin
    Пинг - это команда:
    ping <IP адрес сервера>
    ping использует протокол ICMP для запросов и ответов. ICMP может быть заблокирован фаерволом на хостах в интернете, так что успешное прохождение не гарантируется.
    Ответ написан
  • Как заменить символ во всех файлах?

    @res2001
    Developer, ex-admin
    Для обхода файлов по маске используете цикл for. Из переменной цикла с помощью модификаторов получаете имя файла. С помощью операции замены подстроки в команде set делаете замену в имени файла. С помощью ren задаете файлу новое имя.
    Для справки:
    for /?
    set /?
    ren /?
    setlocal /?

    Модификаторы для переменной цикла описаны в справке по for.
    В теле цикла вам придется изменять переменные и тут же использовать новые значения. По умолчанию в батниках это не работает. Чтоб работало надо в самом начале дать команду
    setlocal ENABLEDELAYEDEXPANSION
    Затем для обращение к переменной в нутри цикла использовать восклицательные знаки, а не знаки процента, например так: !var!. Это приведет к отложенной подстановке переменных в команду. Переменная цикла всегда работает с процентами %%i
    Ответ написан
    Комментировать
  • Как закрепить ярлык на панели задач через gpo?

    @res2001
    Developer, ex-admin
    Ответ написан
    Комментировать
  • Как создать bat file с вызовом окна вопроса, восклицания, ошибки и подкюченеим \отключением устройств?

    @res2001
    Developer, ex-admin
    Для вывода окна с сообщением раньше была команда msg. Но сейчас я ее не обнаружил у себя в Вин10. Возможно ее нет в домашней версии, а в Pro есть.

    Про отключение устройств - у микрософт есть утилита командной строки devcon. Но она не входит в комплект по умолчанию, она есть в составе какого-то SDK у микрософт, гуглите. Эта утилита не показывает окон - все свои действия она выполняет в командной строке, все действия, которые она должна совершить задаются параметрами утилиты.

    Показать окно с сообщением или вопросом может сторонняя утилита nircmd. nircmd - это такой комбайн из целого набора разных полезных утилит, которые можно вызывать из командной строки. Возможно там же есть и работа с устройствами.

    Итог: ваши хотелки на bat/cmd штатными средствами не реализовать.
    Либо вы используете сторонние утилиты, либо используете другой инструмент - думаю, в том же powershell это все можно сделать. Так же в винде из коробки доступны VBScript и JScript их то же можно копнуть.
    Ответ написан
    Комментировать