0

Windows 7 の TEMP フォルダー内のアイテムを削除するスクリプトを作成しようとしています。30 日以上経過したファイルのみを削除したいです。システムの環境変数にTESTTEMPとして設定したフォルダーでテストを行っています。

次のようなスクリプトがあります。

forfiles /p %TESTTEMP% /s /d -30 /c "cmd /c IF @ISDIR==FALSE del @FILE /q"
forfiles /p %TESTTEMP% /s /c "cmd /c IF @ISDIR==TRUE rmdir @FILE"

この背後にある私のロジックは、ファイルが 30 日より古い場合、プロセスは最初に TESTTEMP ディレクトリ内のすべてのファイルを削除し、すべてのサブディレクトリをチェックインする必要があるというものです。次に、残りのファイルを確認し、空のディレクトリである場合は削除します。

このスクリプトは完全に機能します。削除したいすべてのファイルが削除され、残るはずのファイルが残ります。ただし、このバッチファイルを実行すると、コマンドに問題があり、削除したばかりのディレクトリが見つからないThe system cannot find the file specified.と思われるというエラーが表示されることに気付きました...rmdir

スクリプトは私がやりたいことを実行しているように見えるので、これは心配する必要がありますか? さらに良いことに、自分で何が起こっているのかを把握できるように、どのファイルが見つからないかを表示する方法はありますか?

助けてくれてありがとう!

(参考までに、すべてのファイルが 30 日以上経過していると仮定して、バッチ ファイルの実行前後のフォルダー構造を次に示します:)

前:

-TestTemp
    -More Test
        testfile1.txt
        testfile2.txt
        testfile3.txt
    testfile1.txt
    testfile2.txt
    testfile3.txt

後:

-TestTemp
4

3 に答える 3

3

ファイルとフォルダーを表示できます。

forfiles /p "%TESTTEMP%" /s /c "cmd /c IF @ISDIR==TRUE echo rmdir @FILE"
forfiles /p "%TESTTEMP%" /s /d -30 /c "cmd /c IF @ISDIR==FALSE echo del @FILE /q"
于 2013-06-12T22:36:26.920 に答える
2

フォルダが空でない場合、無害なエラー メッセージが返されます。2>nulエラー メッセージが削除されます。

forfiles /p %TESTTEMP% /s /c "cmd /c IF @ISDIR==TRUE rmdir @FILE 2>nul"
于 2013-06-13T06:53:36.103 に答える