Specifica della directory di esecuzione per Attività pianificate utilizzando schtasks.exe
-
22-07-2019 - |
Domanda
Ho un'applicazione che viene chiamata da un'attività pianificata. È passato da Windows Server 2003 a Windows Server 2008. Nel 2003, l'app è stata eseguita nella directory in cui si trovava l'eseguibile. Nel 2008 Environment.CurrentDirectory
(C #) riporta che è in esecuzione in C: \ Windows \ System32. Come posso impostare la directory corrente? Sto usando schtasks.exe per la distribuzione da riga di comando.
UPD : tramite l'interfaccia, sembra essere il " Inizia tra (opzionale) " campo nella schermata di modifica dell'azione.
UPD : sembra che l'utilizzo del file XML possa essere d'aiuto, ma sto cercando di farne a meno.
Soluzione
Di recente ho riscontrato lo stesso problema. Il modo in cui l'ho risolto è stato aggiungere l'opzione / V1 al comando schtasks.
/ V1 crea un'attività pianificata compatibile pre-vista e popola automaticamente la directory Start In.
Altri suggerimenti
Volevo solo aggiungere dettagli validi per Windows Server 2008 e 2012. Come molte persone possono capire meglio le schermate ecco una schermata:
Per riassumere. Quando si crea l'azione per l'attività pianificata, è possibile impostare il & Quot; Inizia tra (opzionale) & Quot; campo (arrotondato in rosso nella schermata). Questa sarà la directory da cui viene avviato il processo.
Spero che questo aiuti!
Puoi impostare l'inizio nella directory usando il seguente comando
La chiave è l'opzione \ nell'opzione / tr.
SCHTASKS /Create /u username /p pswd /ru "NT AUTHORITY\SYSTEM"
/rp /sc ONSTART /tn task-name /tr "\"D:\name-of-file-to-run\" "
Vedi la mia risposta a una domanda simile , su come impostare & Quot; Riattiva il computer per eseguire questa attività ... & Quot; opzione disponibile solo dall'interfaccia utente dell'Utilità di pianificazione (e tramite XML) e non dalla schtasks.exe /create
riga di comando.
I dettagli sono:
- Crea la tua attività tramite
schtasks.exe /create /tn MyTask ...
- Esporta l'attività in XML tramite
schtasks.exe /query /xml /tn MyTask > MyTask.xml
- Aggiorna questo XML tramite XSLT o una ricerca / sostituisci
- Reimportazione (sovrascrivendo la vecchia attività) tramite
schtasks.exe /create /tn MyTask /xml MyTask.xml /f
Prova cd /d "<WorkingDirectory>" & schtasks <SchtasksParams>
Cambia directory di lavoro ed esegui schtasks .
Spero che le persone vedano questa risposta per l'approccio XML (francamente penso che sia un metodo più pulito e ci sia una migliore documentazione sui parametri che puoi impostare per configurare funzioni specifiche anche all'interno dell'attività) .
Passaggio 1: crea un file XML che definisca tutte le impostazioni dell'attività , più posizioni per ulteriori informazioni sugli elementi XML:
- https: // msdn.microsoft.com/en-us/library/windows/desktop/aa383609(v=vs.85).aspx
- https: // msdn.microsoft.com/en-us/library/windows/desktop/aa446863(v=vs.85).aspx
- https: // msdn.microsoft.com/en-us/library/windows/desktop/aa383611(v=vs.85).aspx
- Lo script PowerShell non funziona correttamente dall'Utilità di pianificazione di Windows
- Utilità di pianificazione dalla riga di comando
Passaggio 2: specifico per " dove " l'attività verrà eseguita da (poiché nella directory iniziale lo script inizierà nella riga di comando, questo è direttamente correlato alla domanda dell'OP .... Sarà necessario configurare il parametro in questo modo ...
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2012-08-19T16:49:14.6182</Date>
<Author>YOUR-COMPUTER-DOMAIN\YOUR-USERNAME</Author>
</RegistrationInfo>
... a bunch of other stuff in between here ....
<Actions Context="Author">
<Exec>
<Command>C:\PythonEXE\mini_program_test.exe</Command>
<Arguments></Arguments>
<WorkingDirectory>C:\Some\where\here\</WorkingDirectory>
</Exec>
</Actions>
</Task>
Nota sopra che non ci sono virgolette nel parametro WorkingDirectory - ho fatto quell'errore in precedenza.
Passaggio 3: poiché utilizzerai schtasks.exe per CREARE questa nuova attività tramite XML, dai un'occhiata qui per maggiori informazioni: https://msdn.microsoft.com/en-us/library/bb736357.aspx
Passaggio 4: nella riga di comando di Windows, eseguirai qualcosa del genere (una volta che l'XML è pronto)
C:\>schtasks /CREATE /TN "TASK-NAME-HERE" /RU "YOUR-USERNAME" /RP "YOUR-PASSWORD" /XML C:\YOUR-XML-FILE-LOCATION\ready.xml
Spero che questo ti aiuti un po '- divertiti!
Usa My.Application.Info.DirectoryPath in App senza bisogno di un'impostazione XML.