web-dev-qa-db-fra.com

Spécification du répertoire en cours d'exécution pour les tâches planifiées à l'aide de schtasks.exe

J'ai une application qui est appelée par une tâche planifiée. Il est passé de Windows Server 2003 à Windows Server 2008. En 2003, l'application s'est exécutée dans le répertoire où se trouvait l'exécutable. En 2008 Environment.CurrentDirectory (C #) signale qu'il s'exécute dans C:\Windows\System32. Comment définir le répertoire en cours d'exécution? J'utilise schtasks.exe pour le déploiement en ligne de commande.

UPD : via l'interface, il semble s'agir du champ "Démarrer dans (facultatif)" sur l'écran de modification des actions.

UPD : On dirait que l'utilisation du fichier XML peut aider, mais je cherche à m'en passer.

36
Eugene Katz

J'ai récemment rencontré le même problème. La façon dont je l'ai résolu était d'ajouter le commutateur/V1 à la commande schtasks.

/ V1 crée une tâche planifiée compatible avec Vista et remplit automatiquement le répertoire Démarrer dans.

13
matt.franklin

Je voulais juste ajouter des détails valables pour Windows Server 2008 et 2012. Comme beaucoup de gens peuvent mieux comprendre les captures d'écran, voici une capture d'écran:
enter image description here

Résumer. Lorsque vous créez l'action pour votre tâche planifiée, vous avez la possibilité de définir le champ "Démarrer dans (facultatif)" (arrondi en rouge sur la capture d'écran). Ce sera le répertoire à partir duquel votre processus est déclenché.

J'espère que cela t'aides!

54
Angel Naydenov

Veuillez voir ma réponse à une question similaire , sur la façon de définir l'option "Réveiller l'ordinateur pour exécuter cette tâche ..." qui est uniquement disponible à partir de l'interface utilisateur du Planificateur de tâches (et via le XML), et non le schtasks.exe /create ligne de commande .

Les écrous et boulons de celui-ci sont:

  1. Créez votre tâche via schtasks.exe /create /tn MyTask ...
  2. Exportez votre tâche en XML via schtasks.exe /query /xml /tn MyTask > MyTask.xml
  3. Mettre à jour ce XML via XSLT ou une recherche/remplacement
  4. Réimporter (écraser l'ancienne tâche) via schtasks.exe /create /tn MyTask /xml MyTask.xml /f

Les détails sont ici .

7
NicJ

Essayez cd /d "<WorkingDirectory>" & schtasks <SchtasksParams>

Modifiez le répertoire de travail, puis exécutez schtasks.

2
Yuh-Rong Leu

J'espère que les gens verront cette réponse pour l'approche XML (franchement, je pense que c'est une méthode plus propre et il y a une meilleure documentation sur les paramètres que vous pouvez définir configurer des fonctionnalités spécifiques dans la tâche également).

Étape 1: créez un fichier XML qui définit tous les paramètres de tâche , plusieurs endroits pour plus d'informations sur les éléments XML:

Étape 2: Spécifique à "où" la tâche s'exécutera à partir de (comme dans le répertoire de départ le script commencera dans la ligne de commande, ceci est directement lié à la question de l'OP .... Vous aurez besoin de configurer le paramètre comme ça ...

<?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> 

Veuillez noter ci-dessus qu'il n'y a pas de guillemets dans le répertoire de travail paramater - j'ai fait cette erreur plus tôt.

Étape 3: Puisque vous utiliserez schtasks.exe pour CRÉER cette nouvelle tâche via le XML, jetez un œil ici pour plus d'informations: - https://msdn.Microsoft.com/en-us/library/bb736357.aspx

Étape 4: Dans la ligne de commande Windows, vous exécuterez quelque chose comme ça (une fois que votre XML est prêt)

C:\>schtasks /CREATE /TN "TASK-NAME-HERE" /RU "YOUR-USERNAME" /RP "YOUR-PASSWORD" /XML C:\YOUR-XML-FILE-LOCATION\ready.xml

J'espère que cela vous aidera un peu - amusez-vous!

2
Doug E Fresh

Utilisez My.Application.Info.DirectoryPath dans l'application sans avoir besoin d'un paramètre XML.

0
Owen