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

    @res2001
    Developer, ex-admin
    Ищите папки по маске с помощью dir: dir /b /ad c:\temp\log*
    Засовываем этот dir в for /f:
    for /f "tokens=* delims=" %%a in ('dir ...') do (
       echo %%a
    )

    В цикле копируем отобранные папки.
    Для инкрементации счетчика папок используем set /a "logidx=logidx+1"
    Для справки:
    for /?
    dir /?
    set /?
    if /?
    copy /?
    move /?
    md /?
    Ответ написан
  • Как с помощью for добиться такого же результата, что и командой dir?

    @res2001
    Developer, ex-admin
    Я бы предложил запихнуть dir в for /f и в for обрабатывать вывод dir, добавляя нужную информацию:
    for /f "tokens=* delims" %%a in ('dir /s /b *') in (
       rem Тут можно писать любой другой код. Имя текущего файла в %%a
       echo %%~a
    )
    Ответ написан
  • Как отправлять AT команды из командной строки и получать ответ?

    @res2001
    Developer, ex-admin
    Ответ написан
    Комментировать
  • Как удалить массово папки весом меньше 1mb?

    @res2001
    Developer, ex-admin
    Основная проблема - быстро узанать размер каталога. Стандартных средств cmd для этого нет.
    Остается только делать рекурсивный обход каждого каталога и суммировать размеры каждого файла, как только сумарный размер превысит 1 Мб подсчет можно прекращать и пропускать каталог.
    Размер конкретного файла можно получить из переменной цикла for /f с помощью модификатора %%~zi. Этот же модификатор действует и для нумерованных параметров процедур
    Смотрите:
    for /?
    call /?
    set /?
    rmdir /?
    Ответ написан
    Комментировать
  • Как скопировать файлы по дате изменения посредством bat?

    @res2001
    Developer, ex-admin
    Развернуто не выйдет - нет под рукой винды. Могу дать направление.

    Получить отсортированный по дате изменения список файлов можно с помощью команды: dir /b /a-d /od *
    За сортировку отвечает ключ /od, можно получить обратную сортировку, тогда надо задать ключ /o-d. Ключ /a-d удаляет из вывода каталоги (по умолчанию dir выводит и каталоги то же).
    Эту команду надо запихнуть в цикл, примерно так:
    for /f "tokens=* delims=" %%a in ('dir /od ...') do (
      echo %%a
    <тут команды тела цикла>
    )

    В цикле просто на первой итерации копируете файл в to и to2 и выходите из цикла (goto).
    Для дальнейших действий аналогичные циклы по соответствующим каталогам, только пропускаете первых 5 итераций, на остальных файлы удаляете. Пропустить 5 итераций в цикле можно либо счетчиком в теле цикла, либо есть опция цикла skip.
    Примерно схема уже должна быть ясна.
    Отработайте этапы команды по одному, а потом запихните все этапы в один батник.
    Детали применения команд смотри:
    dir /?
    for /?
    set /?
    goto /?
    Ответ написан
    6 комментариев
  • Bat файл работает через раз как исправить?

    @res2001
    Developer, ex-admin
    В команде call, на соклько помню нужно указывать имя файла с расширением. Она вызывает другой внешний батник. Проверить сейчас поведение команды без указания расширения не могу.
    В любом случае, если тут должен вызваться activate.bat, то надо его смотреть то же.

    По остальным командам вообще не чему тормозить, кроме, конечно питоновского скрипта.
    Ну и не забывайте, что в конце стоит команда pause - она ждет нажатия any key пользователем. Ждать может до посинения.
    Ответ написан
  • Можно ли создать bat файл который будет откатывать изменения?

    @res2001
    Developer, ex-admin
    При чем тут cmd/bat?
    Делайте бэкапы, и восстанавливайте файлы из бэкапов.
    Обычно чем вы создаете бэкапы, тем же инструментом и восстанавливаете.
    Инструментов для бэкапа/восстановления много. В т.ч. можно накропать соответствующие скрипты и на батниках, используя какой-нибудь архиватор.

    Если вы надеялись на простой чудесный способ восстановления без предварительного бэкапа, то такого варианта не существует.
    Ответ написан
    Комментировать
  • Можно-ли отправить внешний ip адрес на e-mail через bat скрипт?

    @res2001
    Developer, ex-admin
    Можно.
    Только сначала требуется узнать этот внешний адрес, а затем отправить его по почте.
    Обе эти задачи средствами которые есть в cmd по умолчанию не решить.
    Но если использовать не cmd, а WSH (то же есть в винде по умолчанию, JScript/VBS) или posh, то это облегчит задачу и уже можно будет ее решить не прибегая к сторонним инструментам.
    Ответ написан
    Комментировать
  • Почему выходит синтаксическая ошибка в команде?

    @res2001
    Developer, ex-admin
    Напишите команду start сразу после do.
    Или можно завернуть start в круглые скобки. Открывающая круглая скобка должна быть после do в той же строке.
    Т.е. for вместе с телом цикла - это одна команда для cmd и она должна быть на одной строке. Круглые скобки позволяют обойти это ограничение.
    Ответ написан
    2 комментария
  • Как просмотреть список установленного ПО на удаленном хосте (для локального код прикрепляю)?

    @res2001
    Developer, ex-admin
    Утилита reg умеет запрашивать реестр удаленных компов, если есть доступ, конечно: reg /?
    Эту же операцию можно сделать с помощью wmic, она то же умеет работать с удаленными компами. По моему, она дает более структурированную информацию, чем можно нарыть в реестре в "ручную". Конкретные параметры погуглите.
    Ответ написан
    2 комментария
  • Как сравнить две даты в dat?

    @res2001
    Developer, ex-admin
    Батники не умеют работать с датами. Тут все переменные строковые.
    Да, set /a умеет целочисленную арифметику, но результат все равно строковый.
    Нужно перевести даты в количество дней с начала эпохи, а потом их уже можно сравнивать стандартными средствами.
    Проще всего использовать для этих целей более продвинутые средства, умеющие работать с датами, например powershel, JS, VBS - эти скрипты при желании можно вызывать из батника.
    Но если очень хочется, можно и батником пересчитать. Алгоритм расчета есть на вики. Код можно дернуть отсюда - https://www.robvanderwoude.com/files/datediff_nt.txt
    Ответ написан
    Комментировать
  • Как вывести результат команды cmd в переменную?

    @res2001
    Developer, ex-admin
    Вот так должно работать:
    for  /f "delims=" %i IN ('net user %username% ^| findstr /C:"Действие пароля завершается" ') DO set var=%i
    Ответ написан
  • Как ввести результат поиска cmd в переменную?

    @res2001
    Developer, ex-admin
    Правильная команда: dir /s steam.exe
    Примерно так будет:
    for "tokens=* delims=" %%a in ('dir /s  steam.exe') do (
      move "%%~a" "путь куда перемещаем файл"
    )
    Ответ написан
    2 комментария
  • Добавить задачу в авто запуск?

    @res2001
    Developer, ex-admin
    С помощью утилиты schtasks можно добавлять задания в планировщик.
    С помощью reg add - можно добавить ключи в реестр для автозапуска.
    Но если вам нужны права администратора при выполнении программы, то в обоих случаях при вызовах schtasks и reg вы должны обладать этими правами.
    Ответ написан
  • Как запустить cmd внутри bat для выполнения команд?

    @res2001
    Developer, ex-admin
    Батник и так выполняется внутри cmd. Обычно дополнительно cmd запускать не надо.
    Просто напишите нужные команды в батнике и запускайте в cmd или в проводнике (тогда cmd запустится автоматически и выполнит батник).
    Ответ написан
    2 комментария
  • Как удалить файл превышающий размер?

    @res2001
    Developer, ex-admin
    Проверяйте размер и удаляйте.
    Получить размер файла можно с помощью модификаторов. Описание модификаторов смотрите в call /? или for /?
    Батник запускать из шедулера.
    Ответ написан
    Комментировать
  • Как написать .bat для сканирования измененных файлов и что в етих измененных файлов подставлялась дата?

    @res2001
    Developer, ex-admin
    Отслеживать изменения в файлах можно с помощью аттрибута "архивный".
    Этот аттрибут выставляется автоматически ОС при любом изменении файла.
    Вывести список файлов, у которых аттрибут "архивный" выставлен можно с помощью dir /a:a
    Получить дату/время изменения файла можно с помощью модификаторов переменной цикла. Смотрите for /?
    После переименования файла нужно снимать аттрибут архивный - это будет признак того, что файл уже обработан и в следующий раз он в обработку не попадет (если не будет модифицирован). Сделать это можно командой attrib /?
    Ответ написан
    Комментировать
  • Можно ли изменить размер окна программы и расположение его с помощью батника?

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

    @res2001
    Developer, ex-admin
    vcvars32.bat идет в составе MSVS для установки переменных окружения.
    Так же MSVS устанавливает в меню пуск несколько ярлыков для запуска командной строки, где уже установлены все нужные переменные окружения. Делается это примерно так:
    cmd.exe /K vcvars32.bat
    Ключ /K не дает закрыться cmd.exe после выполнения команды переданной в параметре. Команду привел схематично, можете точную команду посмотреть в ярлыке MSVS. Возможны и другие параметры, которые передаются уже в vcvars32.bat.
    Кстати, есть еще и vcvars64.bat.
    Нет смысла всегда запускать vcvars32.bat при старте cmd. Просто используйте ярлык от MSVS для запуска командной строки.
    Ответ написан
    Комментировать
  • Как создать свой скрытый значок?

    @res2001
    Developer, ex-admin
    Область справа на панели задач это "трей". И это не область скрытых задач. В винде есть специальный API для того, что бы приложение могло размещать свою иконку в трее. Приложение должно само уметь это делать (или это можно сделать с помощью третьего приложения см. ответ benipaz ). cmd.exe такого делать не умеет.

    Скрытых задач полно в винде и их окон и иконок вы не видите нигде. Для проверки просто откройте диспетчер задач и перейдите на закладку детально - в этом списке процессы, которые сейчас работают в вашей винде. Сколько иконок из этого списка вы видите в панели задач и в трее?

    У меня есть bat скрипт запускающийся при старте Window 10

    Почему бы не завершать этот стартовый скрипт? Тогда он не будет висеть в панели задач.
    Другой вариант - можно запустить этот скрипт из планировщика по событию логин пользователя. Задания из планировщика по умолчанию выполняются в скрытом режиме.
    Так же есть другой вариант - запустить батник в скрытом режиме через промежуточный небольшой скрипт на JavaScript или VBScript. Примеры легко гуглятся. При этом можно внедрить JavaScript скрипт в батник таким образом физически оба скрипта будут находится в одном файле. Технику внедрения JavaScript скрипта в батник то же можно нагуглить, ничего сложного там нет.
    Ответ написан