Поправете планираната задача, която не се изпълнява за .BAT файл

Ако имате .BAT файл и се опитвате да го накарате да се стартира автоматично с Task Scheduler в Windows , може да сте се сблъскали с проблема, при който той просто не се изпълнява, освен ако не стартирате ръчно задачата.

Създадох пакетен файл, който изтрива всичко във временна папка, когато компютърът се стартира. Създадох основна задача в Task Scheduler и се надявах на най-доброто. За съжаление нищо не се случи, когато компютърът ми се зареди. След много опити и грешки разбрах как да накарам скрипта да стартира.

В тази статия ще ви преведа през настройките и разрешенията, които трябва да коригирате, за да накарате пакетния ви файл да работи без ръчна намеса.

Стъпка 1: Проверете разрешенията File/Folder

Първата стъпка за отстраняване на този проблем е да гарантирате, че акаунтът, който използвате за стартиране на скрипта в Task Scheduler , има разрешения за пълен контрол(Full Control) върху папката, съдържаща скрипта, самия скрипт и всички папки/файлове, които скриптът докосва, когато се изпълнява.

Например, създадох следния пакетен скрипт по-долу:

set folder="C:\test"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)

Записах .BAT файла в моята папка Документи. Пътят е C:\Users\username\Documents . Отидох в C:\Users\username, щракнах с десния бутон върху папката Documents и щракнах върху Properties . След това щракнах върху раздела Сигурност(Security) .

Както можете да видите, потребителският акаунт Aseem е добавен изрично и му е дадено разрешение за пълен контрол(Full Control) . Сега трябва да направите същото за папката, която съдържа скрипта, и за самия скрипт. Не допускайте просто, че ако дадете разрешения на папката, съдържаща скрипта, можете да тръгнете, защото не сте. И накрая, задайте разрешения за всички файлове и папки, с които скриптът ще взаимодейства.

В моя случай трябваше да отида на C:\test , да щракна с десния бутон върху тази папка и да добавя потребителския си акаунт там с разрешения за пълен контрол . (Full Control)Досадно е, че трябва да направите това, но това е единственият начин да накарате скрипта да се стартира.

Забележка: Акаунтът, който се използва за изпълнение на скрипта, трябва да е част от групата на локалните администратори на компютъра. В моя случай акаунтът Aseem е администраторски акаунт и следователно част от локалната група администратори. (Note: The account that is being used to run the script has to be part of the local Administrators group on the computer. In my case, the Aseem account is an administrator account and therefore part of the local Administrators group. )

Стъпка 2: Проверете настройките на Task Scheduler(Task Scheduler Settings)

Сега да отидем в Task Scheduler и да променим съответните настройки там. Отворете Task Scheduler и намерете вашата задача в секцията Активни задачи( Active Tasks) . Те трябва да бъдат изброени по азбучен ред.

Щракнете двукратно върху него и това ще отвори задачата сама в същия прозорец. За да редактирате задачата, ще трябва да щракнете с десния бутон върху нея и да изберете Свойства(Properties) .

Има няколко раздела и тук трябва да проверите и промените няколко неща. Първо, в раздела Общи(General) , трябва да проверите потребителския акаунт, който се използва за изпълнение на задачата. В моя случай това е акаунтът Aseem(Aseem) , на който бях дал разрешения по-рано във файловата система и който е част от групата на администраторите(Administrators) на компютъра.

След това трябва да изберете опцията Изпълни дали потребителят е влязъл или не( Run whether user is logged on or not) и изберете Windows Vista, Windows Server 2008 в полето Конфигуриране за(Configure for) .

В раздела Действия(Actions) трябва да изберете скрипта, да щракнете върху Редактиране(Edit) и след това да добавите пътя към папката, съдържаща скрипта, в полето Старт в (по избор)(e Start in (optional)) . Това може да изглежда ненужно, но не е така. В моя случай поставих C:\Users\Aseem\Documents\ в полето.

Сега щракнете върху OK , за да запазите настройките. Когато направите това, може да се появи диалогов прозорец, в който трябва да въведете паролата за потребителския акаунт, който ще изпълнява задачата. Това поражда още едно изискване. Не можете да използвате акаунт, който няма парола. Потребителският акаунт трябва да има парола, за да може задачата да се изпълнява.

И накрая, трябва да стартирате задачата ръчно веднъж в Task Scheduler , за да сте сигурни, че се изпълнява. Ако работи добре ръчно, след като сте променили всички настройки, тогава трябва да работи, когато трябва да се задейства. В моя случай това трябваше да се случи при стартиране и след като направих промените, всичко работи добре.

Имайте предвид, че ако вашият скрипт осъществява достъп до различни компютри в домейн, когато се изпълнява, трябва да опитате да използвате акаунта на администратор на домейна, за да изпълните задачата. Това ще гарантира, че акаунтът има достатъчно разрешения за достъп до отдалечените компютри.

Друг елемент, който трябва да обърнете внимание, е дали вашият скрипт има достъп до ресурси в мрежов споделен ресурс. Ако вашият скрипт използва букви за достъп до мрежата, той може да не се изпълнява. Например, вместо да използвате F:\data\ , трябва да използвате \\machinename\share_name\data\ Â в скрипта. Ако все още не можете да стартирате скрипта си, публикувайте коментар тук и аз ще се опитам да помогна. Наслади се!



About the author

Аз съм компютърен професионалист с над 10 години опит. В свободното си време обичам да помагам на бюрото в офиса и да уча децата как да използват интернет. Моите умения включват много неща, но най-важното е, че знам как да помагам на хората да решават проблеми. Ако имате нужда от някой, който може да ви помогне с нещо спешно или просто искате някои основни съвети, моля, свържете се с мен!



Related posts