好的我需要一个批处理文件,它可以完成以下操作,但就我而言,我似乎无法让它工作。
C:\
驱动器中搜索所有 *.PST
文件j:\@PCBackup\PST
)如果存在以下内容:
c:\archive.pst
c:\user\archive.pst
输出类似于:
:\@PCBackup\PST\archive1.pst
:\@PCBackup\PST\archive2.pst
这可能吗?
答案 0 :(得分: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,这应该足以防止所有类似的文件名问题。