BAT:Windowsバッチ処理は現在の作業経路を変更します。

1334 ワード

最近のプロジェクトでは、フォルダ下のすべてのファイル情報を取得する必要があります。フォルダはserver上にあるので、バッチ処理batでこのパスの下のすべてのファイル情報を取得し、タスクプラン管理を通じて毎日自動的に実行してファイル情報の内容を更新したいです。
フォルダからすべてのファイル情報を取得し、現在のディレクトリに保存するtest.txtのcmdコマンド:
dir /s /b *.* > test.txt
 
test.batファイルとして保存して、test.batをダブルクリックすると、このフォルダディレクトリの下でtest.txtが生産されます。中にはすべてのファイルのパス情報が含まれます。
タスク計画プログラムを開き、新たな基本タスクを作成し、インストール手順を作成し、起動プログラムをtest.batに設定します。
このタスクの実行を右クリックして、test.batが成功したかどうかを確認します。
ここで問題が発生しました。この計画タスクはすでに実行されたと表示されますが、先のフォルダのパスでtest.txtというファイルが生成されていないことが分かります。
そしてtest.txtのパス情報を変更して、絶対パスを使って、再度計画タスクを実行します。
dir /s /b *.* > D:\test\test.txt
 
まだ問題があります。test.txtファイルは確かに生成されましたが、中のファイル情報は現在のフォルダのものではなく、windows\system 32のファイル情報です。例えば、C:\WINDOWS\system 32\0499などです。
問題点は現在の作業経路です。システム計画タスクのデフォルトの現在の作業経路はC:\WINDOWS\system 32ですので、C:\WINDOWS\system 32以下のファイル情報が表示されます。
現在の作業経路を変更します。batファイルに一行を追加して、まずbatがあるディレクトリを現在の作業経路に設定します。
cd /d %~dp0
dir /s /b *.* > test.txt
 
このようにして、この問題を完璧に解決しました。計画タスクは完璧に実行されて、現在のフォルダの下のすべてのファイル情報を取得することができます。
転載先:https://www.cnblogs.com/danvy/p/11357286.html