Вопрос или проблема
@echo off
title создание резервной копии текущей открытой папки windows
setlocal enabledelayedexpansion
powershell @^(^(New-Object -com shell.application^).Windows^(^)^).Document.Folder.Self.Path >> prevfolderpaths.txt
FOR /F "tokens=*" %%f IN (prevfolderpaths.txt) DO (
set "var=%%f"
set "firstletters=!var:~0,2!"
IF "!firstletters!" == "::" ( ECHO start shell:%%~f >> foldersession.bat) ELSE ( ECHO start "" "%%~f" >> foldersession.bat)
)
del "prevfolderpaths.txt"
Я использую следующее как резервную копию всех открытых папок, когда Windows зависает, когда я кликаю на нее из проводника. Это работает хорошо, создается пакетный файл, который я могу открыть позже
foldersession.bat
start "" "C:\Users\sscic\Downloads"
start "" "C:\Windows\symbolic links\New folder"
start "" "C:\Users\sscic\Downloads"
Хорошо работает, когда я открываю его, щелкая по нему, проблема в том, что я пытался настроить это через планировщик задач, чтобы делать резервную копию каждые несколько минут, но это не работает, не создается никакой foldersession
Я также пытался запустить его через explorer.exe C:\Users\sscic\explorer.exe “C:\Windows\symbolic links\New folder\foldersave.bat”
без успеха, это совершенно сбивает меня с толку, есть ли здесь профессионалы, у которых есть идеи?
Не создан никакой foldersession.bat при автоматизации задания
Ответ или решение
Когда речь идет о автоматизации задач в Windows с использованием пакетных файлов, могут возникнуть различные сложности, особенно при запуске через Планировщик заданий. Исходя из вашего описания проблемы, вы столкнулись с ситуацией, когда ваш пакетный файл, который корректно работает при ручном запуске, не создает ожидаемый файл foldersession.bat
, когда запускается автоматически через Планировщик заданий. Давайте рассмотрим это более подробно.
1. Проверка прав пользователей
Одной из наиболее распространенных причин, по которой задачи не выполняются так, как ожидается, являются проблемы с правами доступа. Убедитесь, что задание в Планировщике заданий настроено с использованием учетной записи, обладающей достаточными правами для выполнения вашего пакетного файла и записи на диск.
- Решение: Откройте свойства задачи, и в разделе «Безопасность» выберите опцию «Запускать только когда пользователь вошел в систему» (если это возможно) или «Запускать независимо от входа в систему» с установкой необходимых прав.
2. Путь к файлу
Убедитесь, что полный путь к файлу prevfolderpaths.txt
и foldersession.bat
указан правильно. При запуске через Планировщик заданий рабочая директория может отличаться.
- Решение: Попробуйте явно указать полные пути в вашем пакетном файле. Например:
powershell @^(^(New-Object -com shell.application^).Windows^(^)^).Document.Folder.Self.Path >> "C:\Path\To\Your\prevfolderpaths.txt" ECHO start "" "%%~f" >> "C:\Path\To\Your\foldersession.bat"
3. Проблемы с задержкой выполнения команд
Когда вы используете setlocal enabledelayedexpansion
, это может вызвать неожиданные результаты при выполнении пакетного файла через Планировщик заданий.
- Решение: Попробуйте убрать использование
enabledelayedexpansion
или использовать простые переменные для отладки. Добавьте командыECHO
для проверки значений переменных, чтобы определить источник проблемы.
4. Логирование ошибок
Для лучшего понимания того, что происходит при выполнении задачи, добавьте логирование к вашему пакетному файлу.
- Решение: Добавьте следующие строки в ваш пакетный файл, чтобы записать возможные ошибки в файл лога:
@echo off echo Starting backup process >> "C:\Path\To\Your\log.txt" echo Date/Time: %date% %time% >> "C:\Path\To\Your\log.txt" powershell ... >> "C:\Path\To\Your\log.txt" 2>&1
5. Проверка условий запуска
Проверьте условия запуска (триггеры) в вашем задании. Они могут блокировать выполнение задачи.
- Решение: Убедитесь, что в настройках триггеров заданий учтены все условия (например, запущенный компьютер, соединение с сетью и т.д.).
Заключение
Следуя вышеуказанным шагам, вы сможете лучше разобраться в проблеме и устранить ее. Проверка прав пользователей, корректность указанных путей, логирование выполнения и правильная настройка условий запуска — это важные аспекты, которые помогут в успешном использовании вашего пакетного файла с Планировщиком заданий. Если после выполнения всех предложенных шагов проблема останется, стоит рассмотреть возможность других методов автоматизации, например, с использованием PowerShell или сторонних скриптов.