schtasks.exeを使用してスケジュールされたタスクの実行ディレクトリを指定する
-
22-07-2019 - |
質問
スケジュールされたタスクによって呼び出されるアプリケーションがあります。 Windows Server 2003からWindows Server 2008に移行しました。2003年、アプリは実行可能ファイルがあるディレクトリで実行されました。 2008 Environment.CurrentDirectory
(C#)では、C:\ Windows \ System32で実行されていると報告されます。実行中のディレクトリを設定するにはどうすればよいですか?コマンドラインでの展開にschtasks.exeを使用しています。
UPD :インターフェースからは、<!> quot;開始(オプション)<!> quot;アクション編集画面のフィールド。
UPD :XMLファイルを使用すると役立つように見えますが、XMLファイルなしで実行したいと思っています。
解決
最近、同じ問題に遭遇しました。私が解決した方法は、/ V1スイッチをschtasksコマンドに追加することでした。
/ V1はpre-vista互換のスケジュールされたタスクを作成し、Start Inディレクトリに自動的に入力します。
他のヒント
Windows Server 2008および2012に有効な詳細を追加したかっただけです。多くの人がスクリーンショットをよりよく理解できるように、ここにスクリーンショットがあります。
まとめます。スケジュールされたタスクのアクションを作成するとき、<!> quot; Start in(optional)<!> quot;を設定するオプションがあります。フィールド(スクリーンショットでは赤く丸められています)。これは、プロセスがトリガーされるディレクトリになります。
これがお役に立てば幸いです!
次のコマンドを使用して、ディレクトリで開始を設定できます
キーは/ trスイッチの\です。
SCHTASKS /Create /u username /p pswd /ru "NT AUTHORITY\SYSTEM"
/rp /sc ONSTART /tn task-name /tr "\"D:\name-of-file-to-run\" "
同様の質問に対する私の回答、<!> quot;コンピュータを起動してこのタスクを実行する方法... <!> quot; schtasks.exe /create
コマンドラインではなく、タスクスケジューラUIから(およびXMLを介して)のみ使用可能なオプション。
そのナットとボルトは次のとおりです。
-
schtasks.exe /create /tn MyTask ...
でタスクを作成します
-
schtasks.exe /query /xml /tn MyTask > MyTask.xml
を介してタスクをXMLにエクスポートします
- XSLTまたは検索/置換を介してこのXMLを更新します
-
schtasks.exe /create /tn MyTask /xml MyTask.xml /f
による再インポート(古いタスクの上書き)
試してみるcd /d "<WorkingDirectory>" & schtasks <SchtasksParams>
作業ディレクトリを変更してから、 schtasks を実行します。
XMLアプローチについてこの回答が見られることを願っています(率直に言って、この方法はよりクリーンな方法であり、タスク内の特定の機能を構成するために設定できるパラメーターについてのより良いドキュメントがあると思います) 。
ステップ1:すべてのタスク設定を設定するXMLファイルを作成する、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
- PowerShellスクリプトがWindowsタスクスケジューラから正しく機能しない
- コマンドラインからのタスクスケジューラ
ステップ2:<!> quot; where <!> quotに固有;タスクは次から実行されます(コマンドラインでスクリプトが開始される開始ディレクトリのように、これは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
これが少し役立つことを願って-楽しんでください!
XML設定を必要とせずに、アプリでMy.Application.Info.DirectoryPathを使用します。