推奨されます, 2021

エディターズチョイス

スケジュールされたタスクが.BATファイルに対して実行されない修正

.BATファイルがあり、Windowsのタスクスケジューラを使用してそれを自動的に実行させようとしている場合、手動でタスクを実行しない限り単純に実行されないという問題に遭遇した可能性があります。

コンピューターが起動するたびに一時フォルダー内のすべてを削除するバッチファイルを作成しました。 私はタスクスケジューラで基本的なタスクを作成し、最高のものを望みました。 残念ながら、私のコンピュータの起動時には何も起こりませんでした。 多くの試行錯誤の末、スクリプトを実行する方法を見つけました。

この記事では、手動で介入しなくてもバッチファイルを実行するために調整する必要がある設定と権限について説明します。

手順1:ファイル/フォルダのアクセス許可を確認する

この問題を解決するための最初のステップは、タスクスケジューラでスクリプトを実行するために使用しているアカウントが、スクリプトを含むフォルダ、スクリプト自体、およびスクリプトの実行時に触れるすべてのフォルダ/ファイルに対するフルコントロール権限を持つことです。

たとえば、以下のバッチスクリプトを作成しました。

 設定フォルダ= "C:\ test" cd / d%フォルダ%for / F "delims =" %% i in( 'dir / b')do(rmdir "%% i" / s / q || del "% %i "/ s / q) 

.BATファイルをDocumentsフォルダに保存しました。 パスはC:\ Users \ username \ Documentsです。 C:\ Users \ usernameに行き、 Documentsフォルダを右クリックし、そしてPropertiesをクリックした。 それから私はセキュリティタブをクリックしました。

ご覧のとおり、ユーザーアカウントAseemが明示的に追加されており、 フルコントロールのアクセス許可が与えられています。 今、あなたはスクリプトを含むフォルダーとスクリプトそれ自身のために同じことをしなければなりません。 スクリプトを含むフォルダにアクセス許可を与えたとしても、行ってもいいとは思わないでください。 最後に、スクリプトがやり取りするファイルやフォルダにアクセス許可を設定します。

私の場合は、 C:\ testに移動し、そのフォルダを右クリックして、そこにフルコントロール権限を持つユーザーアカウントを追加します。 これをしなければならないのはちょっと面倒ですが、スクリプトを実行する唯一の方法です。

:スクリプトの実行に使用されているアカウントは、コンピューターのローカルのAdministratorsグループに属している必要があります。 私の場合、Aseemアカウントは管理者アカウントなので、ローカルのAdministratorsグループに属しています。

ステップ2:タスクスケジューラ設定を確認する

それではタスクスケジューラに行き、そこで適切な設定を変更しましょう。 タスクスケジューラを開き、[ アクティブなタスク]セクションで自分のタスクを見つけます。 それらはアルファベット順にリストされるべきです。

それをダブルクリックすると、同じウィンドウにタスクが自動的に開きます。 タスクを編集するには、タスクを右クリックして[ プロパティ ]を選択する必要があります

いくつかのタブがあり、ここでいくつかチェックして変更する必要があります。 まず、[ 全般 ]タブで、タスクの実行に使用されているユーザーアカウントを確認する必要があります。 私の場合は、 Aseemアカウントです。これは、ファイルシステムで以前に許可を与えていたもので、コンピュータのAdministratorsグループの一部です。

次に、[ ユーザーがログオンしているかどうかにかかわらず実行する ]オプションを選択し、[ 構成]ボックスで[Windows Vista、Windows Server 2008 ]を選択する必要があります。

[ Actions ]タブで、スクリプトを選択し、[ Edit ]をクリックしてから、[ Start in(オプション)]ボックスにスクリプトを含むフォルダへのパスを追加します。 これは不要に思えるかもしれませんが、そうではありません。 私の場合は、 C:\ Users \ Aseem \ Documents \をボックスに入れます。

OKをクリックして設定を保存してください。 これを行うと、タスクを実行するユーザーアカウントのパスワードを入力する必要がある場所にダイアログが表示されることがあります。 これには別の要件があります。 パスワードが設定されていないアカウントは使用できません。 タスクを実行するには、ユーザーアカウントにパスワードが必要です。

最後に、タスクが確実に実行されるように、タスクスケジューラでタスクを手動で1回実行する必要があります。 あなたがすべての設定を変更した後それが手動でうまく動くなら、それはそれが引き起こされることになっているときに走るべきです。 私の場合は、起動時に起こるはずだったのですが、変更を加えてもすべてうまくいきました。

実行時にスクリプトがドメイン内の別のコンピュータにアクセスしている場合は、ドメイン管理者アカウントを使用してタスクを実行してください。 これにより、アカウントにリモートコンピュータにアクセスするための十分なアクセス許可が与えられます。

もう1つ注意すべき点は、スクリプトがネットワーク共有上のリソースにアクセスするかどうかです。 スクリプトがネットワークへのアクセスに文字を使用している場合は、実行されない可能性があります。 たとえば、 F:\ data \を使用する代わりに、スクリプトで\\ machinename \ share_name \ data \を使用する必要があります。 それでもスクリプトを実行できない場合は、ここにコメントを投稿してください。 楽しい!

Top