Создайте пакетный файл для выполнения tasklist и добавления его вывода в log.txt

Вопрос или проблема

Создайте пакетный файл для выполнения tasklist и добавления его вывода в log.txt

Я пытаюсь создать пакетный файл, который будет выполнять tasklist каждые 3 минуты и записывать результаты в log.txt.
Я очень нов в пакетных файлах и хотел бы узнать, где я допустил ошибку в моем пакетном файле.

@echo off
set "CURRENT_DIR=C:\Documents and Settings\Administrator\My Documents\Downloads\"

:checkLog
if exist "%CURRENT_DIR%\log.txt" goto writeLog
echo Файл журнала существует. Добавление данных.
if not goto createLog

:createLog
echo Создание log.txt
echo   >"%CURRENT_DIR%\log.txt"

:writeLog
tasklist >> "%CURRENT_DIR%\log.txt"
goto loop

:loop
sleep 3 
goto writeLog

Я думаю, что эта строка незавершена:

if not goto createLog

Я немного упростил это и использовал timeout вместо sleep:

@echo off
set "CURRENT_DIR=C:\Documents and Settings\Administrator\My Documents\Downloads\"

if not exist "%CURRENT_DIR%\log.txt" (
echo Создание log.txt
echo   >"%CURRENT_DIR%\log.txt"
) else (
echo Файл журнала существует. Добавление данных.
)

:writeLog
tasklist >> "%CURRENT_DIR%\log.txt"
timeout /t 3 > nul
goto writeLog

Ответ или решение

Создание пакетного файла для выполнения команды tasklist и записи ее вывода в файл log.txt – это довольно простая задача. Давайте переработаем ваш код, исправив ошибки и упрощая его для выполнения задачи каждые 3 минуты. Вот как это можно сделать:

@echo off
set "CURRENT_DIR=C:\Documents and Settings\Administrator\My Documents\Downloads\"

:: Проверяем, существует ли лог-файл
if not exist "%CURRENT_DIR%\log.txt" (
    echo Создание log.txt
    echo. > "%CURRENT_DIR%\log.txt"
) else (
    echo Лог-файл существует. Добавление данных.
)

:writeLog
:: Выполняем команду tasklist и добавляем результат в log.txt
tasklist >> "%CURRENT_DIR%\log.txt"
:: Ждем 3 минуты (180 секунд)
timeout /t 180 > nul
goto writeLog

Объяснение кода:

  1. @echo off: Отключает вывод команд в консоль, чтобы сделать вывод более аккуратным.

  2. set "CURRENT_DIR=…": Задает переменную окружения для хранения пути к директории, где будет находиться файл log.txt.

  3. if not exist "%CURRENT_DIR%\log.txt" (…):: Проверяет, существует ли файл log.txt. Если нет, то он создается с помощью команды echo. > – это создаст пустую строку в файле. В противном случае выводится сообщение о том, что файл уже существует.

  4. :writeLog: Это метка, к которой мы будем возвращаться в цикле.

  5. tasklist >> "%CURRENT_DIR%\log.txt": Выполняет команду tasklist и добавляет вывод в файл log.txt.

  6. timeout /t 180 > nul: Приостанавливает выполнение скрипта на 180 секунд (3 минуты) без вывода сообщения в консоль.

  7. goto writeLog: Возвращает к метке writeLog для повторного выполнения команды tasklist.

Запуск скрипта:

  • Сохраните этот код в текстовом файле с расширением .bat, например, log_tasks.bat.
  • Дважды щелкните на файл для запуска. Скрипт будет выполняться в фоновом режиме, каждые 3 минуты обновляя log.txt.

Примечание:

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

Оцените материал
Добавить комментарий

Капча загружается...