0

わかりました。次のことを行うバッチファイルが必要です。私の人生では、それを機能させることができないようです。

  1. C:\ドライブ全体ですべての*.PSTファイルを検索します
  2. これらのファイルをネットワークドライブの場所にコピーします(j:\@PCBackup\PST
  3. 同じ名前のファイルが複数存在する場合は、上書きする代わりに名前を変更してください

したがって、以下が存在する場合:

c:\archive.pst
c:\user\archive.pst

出力は次のようになります。

:\@PCBackup\PST\archive1.pst
:\@PCBackup\PST\archive2.pst

これは可能ですか?

4

1 に答える 1

0

次のように実行できます。

@echo off

FOR /F "usebackq delims=;" %%I IN (`dir C:\*.pst /s /b`) DO (
    IF NOT EXIST "j:\@PCBackup\PST\%%~nxI" (
        CALL :COPYFILE "%%I"
    ) ELSE (
        CALL :RENAME "%%I"
    )
)

GOTO :EOF

:COPYFILE
COPY "%1" "j:\@PCBackup\PST"
GOTO :EOF

:RENAME
FOR /L %%N IN (1, 1, 1000) DO (
    IF NOT EXIST "j:\@PCBackup\PST\%~n1%%N%~x1" (
        COPY "%1" "j:\@PCBackup\PST\%~n1%%N%~x1"
        GOTO :EOF
    )
)

最後のFORループでは、ファイル名の競合が発生するたびに使用する次のファイル名を見つけようとしていることに注意してください。カウンターの最大値を 1000 に設定しました。これは、同様のファイル名の問題をすべて防ぐのに十分な値です。

于 2012-11-06T16:38:42.140 に答える