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

    @res2001
    Developer, ex-admin
    Вам нужен батник, который это делает?
    file1.js стартуйте через команду start
    file2.js - старутйте обычным образом (без start).
    Они, конечно, стартуют не одновременно, но по крайней мере file2.js запустится сразу после того как стартанет file1.js. При этом батник будет ждать когда закончит выполнение file2.js и только после этого продолжит выполняться дальше.
    В конце стартуйте file3.js.
    Если до старта file3.js нужно убедится что точно file1.js и file2.js завершили работу (file2.js точно уже завершил работу, а вот file1.js все еще может работать, т.к. запускался через start и с ним батник никак не синхронизирован), то перед его стартом нужно с помощью tasklist в цикле с паузой проверять работает ли еще file1.js.
    Ответ написан
    Комментировать
  • Как отслеживать прекращение печати в консоли?

    @res2001
    Developer, ex-admin
    Делайте перенаправление вывода второго скрипта в файл, тогда по размеру файла вы сможете определить, что он какое-то время бездействует.
    Либо можно более технологично - в запускающем скрипте делаете перенаправление в pipe для запускаемого и работаете с каналом, а не с файлом.
    Но лучше бы выяснить причины зависания скрипта и бороться с ними, а не придумывать костыли.
    Ответ написан
    Комментировать
  • 1C как скрыть окно?

    @res2001
    Developer, ex-admin
    Самый простой способ - запускать cmd из простейшего скрипта на js/vbs. Там есть возможность запускать задачи в скрытом окне. Скрипт легко гуглиться, да и здесь уже пробегал не однократно как решение подобных задач.
    Ответ написан
  • Как дописать скрипт bat файла?

    @res2001
    Developer, ex-admin
    Ясно, что forfiles для ваших целей не подойдет.
    Можно воспользоваться возможностью команды dir сортировать файлы при выводе. Пример можете посмотреть в вопросе, который был тут на днях:
    Вам нужно делать обход по оригинальным файлам (не копиям), далее с помощью вышеупомянутого dir получать список "оригинальный файл + его копии", отсортированный по убыванию даты изменения, оставлять первые 3 файла, остальные удалять.

    Если хотите подробностей, то опишите как и когда у вас создаются копии файлов и как формируются имена копий. Где лежат копии и оригинальные файлы?
    И вообще хотелось бы понять, что вы пытаетесь сделать этим скриптом. Видимо это что-то типа системы циклического бэкапа исходных текстов с сохранением нескольких последних копий. Почему не использовать для этого git?
    Ответ написан
    2 комментария
  • Как убрать приложение из автозапуска в скрытом режиме?

    @res2001
    Developer, ex-admin
    Чем стандартный reg /? не устраивает? После установки просто удаляете соответствующие ключи из реестра.
    Чтоб не было лишних вопросов установку нужно запускать из-под админа, иначе запись в ветку HKLM не возможна. Но вам и так скорее всего нужно его запускать с админскими правами, т.к. нужно установить программу.
    Ответ написан
    Комментировать
  • Как завершить все процессы svchost, кроме системных?

    @res2001
    Developer, ex-admin
    Думаю что одной командой тут не обойтись.
    Можно получить список запущенных svchost с PIDами и путем, затем отфильтровать его, убрав те, которые лежат в %SystemRoot%\System32. После этого уже можно прибивать оставшиеся в списке процессы по PIDу из списка.
    tasklist полный путь не выводит. Полный путь можно получить с помощью:
    wmic process where "name='svchost.exe'" get Name,ProcessID,ExecutablePath

    Правда для большей части запущенных у меня svchostов эта команда так же не дает полный путь в ExecutablePath (Win10 x64), предполагаю, что это какие-то вторичные порожденные процессы.
    Ответ написан
    Комментировать
  • Какой знак/символ переводит текст на новую строку в консоли?

    @res2001
    Developer, ex-admin
    >>test.txt (echo test & echo test2)
    Ответ написан
    Комментировать
  • Как сделать автоматическую смена электропитания windows?

    @res2001
    Developer, ex-admin
    Например я не хочу что бы при подключении к телеку ноут при закрытии крышки уходил в сон. Схему создал но включать ее приходится в ручную и отключать тоже.

    Я настраивал так - если питание от сети, то на закрытие крышки не реагировать. В этом случае схему менять не приходится - 1 раз активировал и все.

    Для смены схемы электропитания смотрите powercfg /?
    Создаете нужную схему и делаете батник с запуском powercfg. Батник можно вставить в шедулер (если там есть подходящее событие) или запускать руками.
    Ответ написан
  • Как передать переменную из CMD в VBS скрипт?

    @res2001
    Developer, ex-admin
    Открывайте дефолтный браузер непосредственно в батнике, зачем вам промежуточный vbs?
    start https://toster.ru

    На счет использования параметров скрипта: www.script-coding.com/WSH/WScript.html#2.12.
    Ответ написан
    3 комментария
  • Как написать bat-файл, который переименовывает только часть имени файла?

    @res2001
    Developer, ex-admin
    @echo off
    SetLocal EnableDelayedExpansion
    
    for %%a in (c:\temp\setup*.*) do (
      set "namesuffix=%%~na"
      set "namesuffix=!namesuffix:setup=!"
      move "%%~a" "<путь к нужной папке>\setup_ver2!namesuffix!%%~xa"
    )
    Ответ написан
  • Как отследить выполнение процесса?

    @res2001
    Developer, ex-admin
    1.https://stackoverflow.com/questions/17404165/how-t...
    2.Каких процессов? Что именно надо отслеживать?
    Если просто наличие запущенного процесса, то можете использовать tasklist и анализировать его код возврата:
    tasklist ... || echo Процесс не запущен
    tasklist ... && echo Процесс запущен

    Подобный батник можно добавить в шедулер, чтоб запускался по таймеру или по событию.
    Ответ написан
    Комментировать
  • Как оставить только текст внутри нужных полей?

    @res2001
    Developer, ex-admin
    Батник:
    @echo off
    SetLocal EnableDelayedExpansion
    
    set "filename=1.txt"
    set "name=" & set "surname=" & set "pass=" & set "api="
    for /f "tokens=2,3 delims=(;', " %%a in ('findstr "define" %filename%') do (
    	if /i "%%a" equ "name" (
    		set "name=%%b"
    	) else if /i "%%a" equ "surname" (
    		set "surname=%%b"
    	) else if /i "%%a" equ "password" (
    		set "pass=%%b"
    	) else if /i "%%a" equ "api" (
    		set "api=%%b"
    	) 
    	if defined name if defined surname if defined pass if defined api (
    		echo.!name!;!surname!;!password!;!api!
    		set "name=" & set "surname=" & set "pass=" & set "api="
    	)
    )

    Предполагается что записи name, surname, password, api будут сгруппированы именно так как в примере, т.е. не будут перемешаны записи разных пользователей.
    В таком варианте возможны проблемы, если в файле будут данные, содержащие спец.символы cmd: !%&<>| ...
    Ответ написан
    Комментировать
  • Почему не удаляет ключ в реестре?

    @res2001
    Developer, ex-admin
    Ну да, и не должен удаляться: не правильно указываете путь и параметр /v. Смотрите reg delete /?
    reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /f /v DWAgentMon
    Ответ написан
    Комментировать
  • Как сравнить разницу в двух текстовых документах и вывести разницу в новый текстовый документ?

    @res2001
    Developer, ex-admin
    Просто проверяйте есть ли текущий файл в логе, если нет добавляйте.
    Как-то так:
    for %%a in (c:\test\*.jpg) do (
      findstr /c:"%%~fa" log.txt || echo.%%~fa>log.txt
    )

    Если log.txt обещает вырастать до БОЛЬШИХ размеров, это может заметно снизить производительность и такой способ мало пригоден. Если log.txt не будет сильно расти, то вполне пойдет.
    В случае большого количества файлов нужен другой вариант. Могу предложить такой: все новые файлы просто переносим в другой каталог. Т.е. в рабочем каталоге не будет старых файлов. В этом случае можно ничего не проверять - появился файл, добавили в лог и перенесли его. При этом в лог можно писать уже новый путь к файлу, что бы обработчик лога нормально находил файлы.
    Ответ написан
  • Можно ли .bat файлом проверить звук?

    @res2001
    Developer, ex-admin
    Непосредственно cmd.exe не умеет проигрывать музыку. Для воспроизведения нужно использовать какие-либо утилиты, умеющие это делать, либо скрипт на vbs/js, который использует OCX объект wmplayrа для воспроизведения звука.
    В целом большинство плееров поддерживают набор параметров командной строки, позволяющих в "тихом" режиме воспроизвести звуковой файл. Это не относится к wmplayerу из современной винды, хотя в WinXP было несколько вариантов доступных "из коробки".
    Вот тут предложено несколько рецептов.
    Ответ написан
    Комментировать
  • Как проверять запущен ли процесс и если не запущен - запустить?

    @res2001
    Developer, ex-admin
    В целом логика вроде правильная.
    Убедитесь в консоли, что команды:
    TaskList /FI "ImageName EQ % ProcessName % " | Find /I %ProcessName% || (echo start process)

    правильно срабатывают при запущенном процессе и при отсутствии процесса.
    Кстати, у вас в tasklist знаки процентов обрамляющие ProcessName написаны через пробел. Их нужно писать слитно. Возможно в этом причина ошибки: % ProcessName %
    Ответ написан
    Комментировать
  • Как запустить и прописать сертификаты автоматически через бат?

    @res2001
    Developer, ex-admin
    В винде есть утилита командной строки для работы с сертификатами: certutil
    Ответ написан
    Комментировать
  • Почему не работает условие и не выводит результат?

    @res2001
    Developer, ex-admin
    1.Арифметические операции поддерживаются только в команде set /a (смотрите set /?)
    2.Кавычки в условии должны быть двойные.
    3.Поставьте после set /p вывод option (echo %option%), чтоб убедиться что в переменной содержится то значение, которое вы ввели с клавиатуры.
    4.Метки в goto указываются без кавычек
    5.На сколько я могу судить, вам нужно между вторым if и меткой сделать exit /b. Сейчас у вас код в метке в любом случае отработает, даже если вы введете 2 (в этом случае откроется файл test.txt и выведется 2+2).

    PS: сейчас под рукой винды нет, протестировать ваш код не могу

    @echo off
    set /p "option="
    if "%option%" == "1" (goto:math)
    if "%option%" == "2" (start "test.txt")
    exit /b
    
    :math
    set /a "val=2+2"
    echo %val%
    pause
    Ответ написан
    4 комментария
  • VLC BAT ковертировать запись раб стола в файл?

    @res2001
    Developer, ex-admin
    Комментировать