私は、2日以上経過したタイムスタンプを持つ特定のフォルダ内のファイルをチェックして、削除または削除したり、他の場所にコピーする方法を教えてください。Windowsバッチスクリプトでファイルのタイムスタンプの作成を確認するにはどうすればよいですか?
答えて
削除についてはわかりませんが、RoboCopy(Windows 7の一部)を使用できます。パラメータ:/ MAXAGE:nはnより古いファイルをコピーします - 通常はコピーをバックアップフォルダに行い、後で私は確かにそのディレクトリから「削除」を行います。
これが役に立ちます。
~t
修飾子を使用してSET
コマンドを使用して単純なFOR
ループを実行すると、ディレクトリ内のファイルの最終変更日時が返されます。
@echo off
setlocal enabledelayedexpansion
echo Files changed today %date%
FOR %%A IN (*.*) DO (
set tf=%%~tA
set fd=!tf:~0,10!
if !fd!==%date% (
echo %%F !tf!
)
)
この例を参照してくださいは、詳細な情報については、HELP FOR
とHELP SET
を参照してください。
しかし、単純な比較を超えて日付を比較するために上記示した、あなたはBATファイルで日付成分を抽出、各日付コンポーネント
set dd=!tf:~0,2!
set mm=!tf:~3,2!
set yyyy=!tf:~6,4!
を抽出しかし、待つ必要があるため%DATE%
、非常にトリッキーな問題です~t
修飾子は、完全に(無限に)カスタマイズ可能な、短い日付形式を使用して日付の書式を設定します。 1人のユーザはFri040811を返すようにシステムを設定し、別のユーザは08/04/2011を選択することができます。これはBATプログラマーのための完全な悪夢です。
一時的に形式を変更する方法が考えられます。この例を参照してください。
@echo off
echo System Date Time = %date% %time%
reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International-Temp" /f >nul
reg add "HKCU\Control Panel\International" /v sShortDate /d "yyyy-MM-dd" /f >nul
reg add "HKCU\Control Panel\International" /v sTimeFormat /d "HH:mm:ss" /f >nul
echo Normalized Date Time = %date% %time%
set dd=%date:~8,2%
set mm=%date:~5,2%
set yyyy=%date:~0,4%
reg copy "HKCU\Control Panel\International-Temp" "HKCU\Control Panel\International" /f >nul
そして最後に、あなたは、日付と算術演算を行う必要があり、あなたはどちらも明らかにされていませんしない日数にDD MM YYYYの日付を変換する必要があります。この変換を行うためのコードがいくつかあります。
:days
:: Algorithm based on Fliegel-Van Flandern algorithm from the Astronomical Almanac,
:: provided by Doctor Fenton on the Math Forum (http://mathforum.org/library/drmath/view/51907.html),
:: and converted to batch code by Ron Bakowski.
SET /A Month1 = (1%MM% %% 100 - 14)/12
SET /A Year1 = %YYYY% + 4800
SET /A days = 1461 * (%Year1% + %Month1%)/4 + 367 * ((1%MM% %% 100) - 2 -12 * %Month1%)/12 - (3 * ((%Year1% + %Month1% + 100)/100))/4 + (1%DD% %% 100) - 32075
SET Month1=
SET Year1=
goto :eof
奇妙なイディオム(1%MM% %% 100)
はゼロで始まる数字を8進数としてSET /A
が解釈する方法に問題を解決するために使用されます。 CMDでコマンド次...一緒に
@echo off
setlocal enabledelayedexpansion enableextensions
reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International-Temp" /f >nul
reg add "HKCU\Control Panel\International" /v sShortDate /d "yyyy-MM-dd" /f >nul
reg add "HKCU\Control Panel\International" /v sTimeFormat /d "HH:mm:ss" /f >nul
set dd=%date:~8,2%
set mm=%date:~5,2%
set yyyy=%date:~0,4%
call :days
set /a today=!days!
FOR %%A IN (*.*) DO (
set tf=%%~tA
set fd=!tf:~0,10!
set dd=!fd:~8,2!
set mm=!fd:~5,2!
set yyyy=!fd:~0,4!
call :days
set /a age= !today!-!days!
if !age! leq 2 (
echo %%A is !age! days old
)
)
reg copy "HKCU\Control Panel\International-Temp" "HKCU\Control Panel\International" /f >nul
goto :eof
:days
:: Algorithm based on Fliegel-Van Flandern algorithm from the Astronomical Almanac,
:: provided by Doctor Fenton on the Math Forum (http://mathforum.org/library/drmath/view/51907.html),
:: and converted to batch code by Ron Bakowski.
SET /A Month1 = (1%MM% %% 100 - 14)/12
SET /A Year1 = %YYYY% + 4800
SET /A days = 1461 * (%Year1% + %Month1%)/4 + 367 * ((1%MM% %% 100) - 2 -12 * %Month1%)/12 - (3 * ((%Year1% + %Month1% + 100)/100))/4 + (1%DD% %% 100) - 32075
SET Month1=
SET Year1=
goto :eof
here is the reference of how you can delete files older than 2 days
をすべてのそれらの部分を入れて
そうで、それを行います。
forfiles /p "c:\path" /s /m *.* /d -365 /c "cmd /c del @file"
- 1. Windowsのバッチスクリプトでファイルのサイズを確認するにはどうすればよいですか?
- 2. 確認メールを作成するにはどうすればよいですか?
- 3. デコーダフィルタでタイムスタンプを作成するにはどうすればよいですか?
- 4. ドラッグしたファイルのパスをWindowsバッチスクリプトで解析するにはどうすればよいですか?
- 5. Xcode 9でコミット履歴のタイムスタンプを確認するにはどうすればよいですか?
- 6. トランプカードのセットを確認できるテストクラスを作成するにはどうすればよいですか?
- 7. WindowsプロセスがC++で別のWindowsプロセスが親プロセスであるかどうかを確実に確認するにはどうすればよいですか?
- 8. ファイルが空であるかどうかを確認するにはどうすればよいですか?
- 9. デベロッパーコンソールで作成されたオブジェクトを確認するにはどうすればよいですか?
- 10. アプリ内購入の支払い確認を作成するにはどうすればよいですか?
- 11. Windowsの現在のデフォルトのコードページをプログラムで確認するにはどうすればよいですか?
- 12. WindowsでPerlプログラムのメモリ使用量をプログラムで確認するにはどうすればよいですか?
- 13. ファイルが存在するかどうかを確認するにはどうすればよいですか?
- 14. ファイルが存在するかどうかを確認するにはどうすればよいですか?
- 15. Windowsで末尾のファイル名を作成するにはどうすればよいですか?
- 16. Windowsのバッチスクリプトでリダイレクトファイルのファイルエンコーディングを変更するにはどうすればよいですか?
- 17. サーバー上のコンピュータからドメインコントローラのWindows Serverバージョンを確認するにはどうすればよいですか?
- 18. C#デバッグ - ワーカースレッドの作成内容を確認するにはどうすればよいですか?
- 19. 回答を確認する回答ラベルボックスを作成するにはどうすればよいですか?
- 20. Windows 7のドキュメントファイル用のWindowsエクスプローラでサムネイルプレビューアイコンを作成するにはどうすればよいですか?
- 21. jQuery Mobileで確認ダイアログを作成するにはどうすればよいですか?
- 22. JavaScriptでファイルを作成するにはどうすればよいですか?
- 23. Windows上でMacで作成した.classファイルを実行するにはどうすればよいですか?
- 24. Windows 2012R2のIIS WebサイトのSHA2 CSRファイルを作成するにはどうすればよいですか?
- 25. Windowsでカスタムログインページを作成するにはどうすればいいですか?
- 26. 特定のファイルがWindowsで開いているかどうかを確認するにはどうすればよいですか?
- 27. recvfrom()のメッセージサイズを確認するにはどうすればよいですか?
- 28. アプリのフレームレートを確認するにはどうすればよいですか?
- 29. イベントのクリックを確認するにはどうすればよいですか?
- 30. データのフォーマットを確認するにはどうすればよいですか?
この質問はserverfaultに属します – onof
あなたは作成タイムスタンプか変更タイムスタンプを意味しますか? –
@onof、IMOこれはバットファイルのプログラミングに関する質問です。 –