web-dev-qa-db-ja.com

schtasks.exeを使用して、スケジュールされたタスクの実行ディレクトリを指定する

スケジュールされたタスクによって呼び出されるアプリケーションがあります。 Windows Server 2003からWindows Server 2008に移行しました。2003年、アプリは実行可能ファイルが存在するディレクトリで実行されました。 2008年Environment.CurrentDirectory(C#)は、C:\ Windows\System32で実行されていることを報告します。実行中のディレクトリを設定するにはどうすればよいですか?コマンドライン展開にschtasks.exeを使用しています。

[〜#〜] upd [〜#〜]:インターフェースからは、アクション編集画面の「開始(オプション)」フィールドのようです。

[〜#〜] upd [〜#〜]:XMLファイルを使用すると役立つかもしれませんが、XMLファイルを使用しないで探しています。

36
Eugene Katz

最近、同じ問題に出会いました。私が解決した方法は、/ V1スイッチをschtasksコマンドに追加することでした。

/ V1は、Vistaより前の互換性のあるスケジュール済みタスクを作成し、Start Inディレクトリに自動的に入力します。

13
matt.franklin

Windows Server 2008および2012に有効な詳細を追加したかっただけです。多くの人がスクリーンショットをよりよく理解できるように、ここにスクリーンショットがあります。
enter image description here

まとめると。スケジュールされたタスクのアクションを作成するとき、「開始(オプション)」フィールドを設定するオプションがあります(スクリーンショットで赤く丸められています)。これは、プロセスがトリガーされるディレクトリになります。

お役に立てれば!

54
Angel Naydenov

同様の質問に対する私の答え を参照してください。タスクスケジューラUI(およびXMLを介して)からのみ利用できる「このタスクを実行するためにコンピューターを起動する...」オプションを設定する方法、 schtasks.exe /createコマンドラインではありません。

ナットとボルトは次のとおりです。

  1. schtasks.exe /create /tn MyTask ...でタスクを作成します
  2. schtasks.exe /query /xml /tn MyTask > MyTask.xmlを介してタスクをXMLにエクスポートします
  3. XSLTまたは検索/置換を介してこのXMLを更新します
  4. schtasks.exe /create /tn MyTask /xml MyTask.xml /fを介して再インポート(古いタスクを上書き)

詳細はこちら

7
NicJ

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

作業ディレクトリを変更してからschtasksを実行します。

2
Yuh-Rong Leu

人々がXMLアプローチのこの答えを見ることができることを願っています(率直に言って、それはよりクリーンな方法だと思います。も))。

ステップ1:すべてのタスク設定を設定するXMLファイルを作成します、XML要素の詳細についてはいくつかの場所:

ステップ2:タスクが実行される「場所」に固有(コマンドラインでスクリプトが開始される開始ディレクトリのように、これはOPの質問に直接関連しています。 ..次のようにパラメータを設定する必要があります...

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

上記に注意してくださいWorkingDirectoryパラメータには引用符がありません-私は以前にその間違いを犯しました。

ステップ3:XMLを介してこの新しいタスクを作成するためにschtasks.exeを使用するため、詳細についてはこちらをご覧ください: https:/ /msdn.Microsoft.com/en-us/library/bb736357.aspx

ステップ4:Windowsのコマンドラインで、このようなものを実行します(XMLの準備ができたら)

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

これが少し役立つことを願っています-楽しんでください!

2
Doug E Fresh

XML設定を必要とせずに、アプリでMy.Application.Info.DirectoryPathを使用します。

0
Owen