Om du har en .BAT-fil och du försöker få den att köra automatiskt med hjälp av Aktivitetsschemaläggare i Windows, kan du ha stött på problemet där det inte körs om du inte kör uppgiften manuellt.
Jag skapade en batchfil som tar bort allt i en tempmapp när datorn startas. Jag skapade en grundläggande uppgift i Task Scheduler och hoppades på det bästa. Tyvärr inträffade ingenting när datorn startade upp. Efter mycket försök och fel, tänkte jag ut hur man får skriptet att springa.
I den här artikeln kommer jag att gå igenom de inställningar och behörigheter du behöver justera för att få din batchfil att köras utan manuell inblandning.
Steg 1: Kontrollera fil / mapptillstånd
Det första steget för att lösa problemet är att se till att kontot du använder för att köra skriptet i Aktivitetsschemaläggaren har fullständiga kontrollbehörigheter i mappen som innehåller skriptet, själva skriptet och alla mappar / filer som skriptet berör när det körs.
Till exempel skapade jag följande batch script nedan:
set mapp = "C: \ test" cd / d% mapp% för / F "delims =" %% jag in ('dir / b') gör (rmdir "%% i" / s / q || del "% % i "/ s / q)
Jag sparade .BAT-filen till min dokumentmapp. Banan är C: \ Users \ användarnamn \ Documents. Jag gick till C: \ Users \ användarnamn, högerklickade på Dokument mapp och klickade på Egenskaper. Sedan klickade jag på säkerhet flik.
Som du kan se, användarkontot Aseem har uttryckligen lagts till och ges med Full kontroll lov. Nu måste du göra samma sak för mappen som innehåller manuset och för själva manuset. Anta inte bara att om du ger behörigheter till mappen som innehåller manuset, är du bra att gå, för att du inte är. Slutligen anger du behörigheter för alla filer och mappar som skriptet ska interagera med.
I mitt fall var jag tvungen att gå till C: \ testhögerklicka på den mappen och lägg till mitt användarkonto där med Full Control-behörigheter. Det är lite irriterande att du måste göra det, men det är det enda sättet att få skriptet att springa.
Notera: Kontot som används för att köra manuset måste vara en del av det lokala Administratörer grupp på datorn. I mitt fall är Aseem-kontot ett administratörskonto och är därför en del av den lokala administratörsgruppen.
Steg 2: Kontrollera inställningar för uppgiftsschemaläggare
Låt oss nu gå till Task Scheduler och ändra lämpliga inställningar där. Öppna uppgiftsschemaläggaren och hitta din uppgift under Aktiva uppdrag sektion. De ska listas ut i alfabetisk ordning.
Dubbelklicka på den och det öppnar uppgiften självt i samma fönster. För att redigera uppgiften måste du högerklicka på den och välja Egenskaper.
Det finns flera flikar och ett par saker måste kontrolleras och ändras här. För det första på Allmän fliken måste du kontrollera användarkontot som används för att köra uppgiften. I mitt fall är det Aseem konto, som jag tidigare hade tillåtit på filsystemet och som ingår i administratörsgruppen på datorn.
Därefter måste du välja Kör om användaren är inloggad eller inte alternativ och välj Windows Vista, Windows Server 2008 i Konfigurera för låda.
På Åtgärder fliken måste du välja skriptet, klicka på Redigera och lägg till sedan i sökvägen till mappen som innehåller skriptet i the Starta (valfritt) låda. Det kan tyckas onödigt, men det är det inte. I mitt fall lägger jag in C: \ Users \ Aseem \ Documents \ i lådan.
Klicka nu på ok för att spara inställningarna. När du gör det kan en dialog visas där du måste ange lösenordet för användarkontot som ska köra uppgiften. Detta ger ett annat krav. Du kan inte använda ett konto som inte har ett lösenord. Användarkontot måste ha ett lösenord för att uppgiften ska kunna köras.
Slutligen bör du köra uppgiften manuellt en gång i Task Scheduler för att se till att den körs. Om det går bra manuellt efter att du har ändrat alla inställningar, ska den köras när den ska utlösas. I mitt fall skulle det hända vid uppstarten och efter att jag gjorde förändringarna fungerade allt bra.
Observera att om ditt skript får åtkomst till olika datorer i en domän när den körs, ska du försöka använda domänadministratorkontot för att köra uppgiften. Detta kommer att säkerställa att kontot har tillräckligt med behörigheter för åtkomst till fjärrdatorerna.
En annan sak att notera är om ditt skript får tillgång till resurser på en nätverksdelning. Om ditt skript använder bokstäver för att komma åt nätverket kanske det inte går att köra. Till exempel istället för att använda F: \ data \, du borde använda \ datornamn \ Resurs_namn \ data \ i manuset. Om du fortfarande inte kan få ditt skript att springa, skriv en kommentar här och jag försöker hjälpa. Njut av!