Задать вопрос
Ответы пользователя по тегу cmd/bat
  • Как отформатировать вывод cmd?

    @res2001
    Developer, ex-admin
    Засуньте это в батник и выполните в консоли:
    @echo off
    for /f "tokens=4" %%a in ('netsh wlan show networks mode^=bssid ^| findstr /c:"BSSID 1" ') do echo %%a
    Ответ написан
    Комментировать
  • В чем ошибка в Бат-файле для запуска отчета в АИДА и отправки на почту?

    @res2001
    Developer, ex-admin
    Аида запускается и на этом процесс останавливается.

    Сейчас вы пытаетесь запустить aida 2 раза, через start и без него во 2 строке. Оба варианта могут сработать. Но очевидно, что по разному, т.к. параметры aida различаются.
    Или возможно, 2 вариант не сработает, из-за того что не прописан полный путь к aida.

    В текущем виде команда start запускает aida без параметров, поэтому вы видите окно aida в котором ни чего не происходит.
    Вторая команда, если она отрабатывает, возможно делает то что надо. Отчет на почту приходит?
    Если нет, то попробуйте для начала добавить полный путь во 2 строке.

    Правильность параметров командной строки для отправки отчета смотрите в документации AIDA. Я тут не в курсе.

    start - запускает приложение и не ждет его завершения, т.е. консольное окно у вас закроется сразу, если вы запускаете батник через ярлык с раб.стола например.
    Без start - консольное окно не закроется, будет ждать завершения запущенного процесса.
    Можно использовать любой вариант. Оба в одном батнике - избыточны.

    Командную строку для aida в обоих вариантах приведите к одному виду, видимо, как во 2 варианте, только, возможно, надо добавить полный путь к aida.

    Правильный вариант использования start в вашем случае такой:
    start "%USERPROFILE%\Desktop\AIDA64\aida64.exe" /E pochta@mail.ru /SUBJ "Отчет AIDA64 $HOSTNAME" /HTML /SUM

    Конечно, если параметры для aida вы сформировали правильно.
    Ответ написан
    1 комментарий
  • Почему pause в cmd скрипте не предотвращает закрытие окна?

    @res2001
    Developer, ex-admin
    goto :eof - приводит к завершению скрипта в этом месте. Это равносильно exit.

    Пример кода приведен ниже в коментариях: Почему pause в cmd скрипте не предотвращает закрытие окна?
    Ответ написан
    9 комментариев
  • Зачем в cmd bat (командной строке) создали режим enabledelayedexpansion?

    @res2001
    Developer, ex-admin
    Как я себе это понимаю:
    cmd подставляют значения переменных до выполнения команды и формируют очередную командную строку, затем ее выполняют.
    При этом команда for ... () со всем ее содержимым интерпретируется первоначально как одна команда (это можно увидеть если убрать echo off), соответственно переменные во внутренних командах цикла не могут быть подставлены в этот момент, т.к. они просто не имеют нужного значения в начале цикла.
    Затем, когда выполняется цикл, запускается вложенный cmd и уже ему нужно подставлять переменные в команды.
    Для того чтобы переменные не подставлялись перед выполнением цикла используется другой синтаксис обращения к переменным.

    То же самое происходит и с if, видимо.
    Ответ написан
    Комментировать
  • Как сделать в 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 не может его прочитать.
    Ответ написан
  • Как сохранить текст из окна батника в 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 может быть заблокирован фаерволом на хостах в интернете, так что успешное прохождение не гарантируется.
    Ответ написан