![DOS コマンドライン ファイルを前月の名前のフォルダに移動する](https://rvso.com/image/1254808/DOS%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%89%8D%E6%9C%88%E3%81%AE%E5%90%8D%E5%89%8D%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AB%E7%A7%BB%E5%8B%95%E3%81%99%E3%82%8B.png)
タスク スケジューラで、一部の PDF ファイルを、前月の PDF ファイルの日付に基づいて別のフォルダーに自動的に移動するタスクを作成しようとしています。問題は、コマンド ラインを前月にロールバックする方法がわからないことです。最初にフォルダーを作成するために同じものを使用していますが、タスクは前月と見なされる月の終わりに実行されるように設定されています。たとえば、1 つのタスクを 10 月に実行して現在の月 2010-10 のフォルダーを作成し、別のタスクを PDF がコンパイルされた後の 11 月に実行して PDF を 2010-10 フォルダーに移動します。何かアイデアはありますか?
私が使用している日付パラメータは「%DATE:~0,2%」です。「%DATE:~0,2% -1」と「%DATE:~0,2%-1」を試しましたが、バッチ ファイルの全文は「move [-Y] *.pdf P:\CBO\Physician Monthly Reports\%DATE:~6,4%-%DATE:~0,2% -1」です。
答え1
文字の選択により、日付の形式が「MM-DD-YYYY」のようになる必要があります。このコマンドは、現在の月の数字を取得し、1 を減算して、 という変数に保存しますprevmonth
。また、前の月が 12 月の場合は、年から 1 を減算します。
set /a prevmonth=%DATE:~0,2% - 1
set yearprevmo=%DATE:~6,4%
if %prevmonth% equ 0 set /a yearprevmo=%yearprevmo%-1 & set prevmonth=12
move -Y *.pdf "P:\CBO\Physician Monthly Reports\%yearprevmo%-%prevmonth%"
ディレクトリ名にスペースが含まれているため、引用符に注意してください。
答え2
C:\>move /Y \\your Network server\PROD\PM\FileArchive\2011*.txt \\your Network server\PROD\PM\FileArchive\Documents