我打算假設您的源名稱爲「image.jpeg」,並且您的目標具有附加後綴。
我建議在附加後綴之前加上一個點,以表明原始名稱結尾和後綴開始的位置。你的原名最後可能已經有了一個號碼。
這是一個粗糙但非常有效的蠻力方法,最多可支持100個副本。顯然,上限可以很容易地增加。
call :backup "c:\image.jpeg"
exit /b
:backup
for /l %%N in (1 1 100) do (
if not exist "G:\backup\%~n1.%%N.%~x1" (
echo F|xcopy %1 "G:\backup\%~n1.%%N.%~x1" >nul
)
exit /b
)
但是有一個潛在的問題。假設image.1.txt和image.2.txt已經存在,但是你刪除了image.1.txt。下一次備份它將重新創建image.1.txt,然後您可能會認爲image.2.txt是最新的備份。
以下內容可用於始終創建新的備份,其數字後綴1大於最大現有後綴,即使數字中有整數。
@echo off
call :backup "c:\image.jpeg"
exit /b
:backup
setlocal disableDelayedExpansion
set /a n=0
for /f "eol=: delims=" %%A in (
'dir /b "g:\backup\%~n1.*%~x1"^|findstr /rec:"\.[0-9][0-9]*\%~x1"'
) do for %%B in ("%%~nA") do (
setlocal enableDelayedExpansion
set "n2=%%~xB"
set "n2=!n2:~1!"
if !n2! gtr !n! (
for %%N in (!n2!) do (
endlocal
set "n=%%N"
)
) else endlocal
)
set /a n+=1
echo F|xcopy %1 "g:\backup\%~n1.%n%%~x1" >nul
你真的是指'xcopy/H/Y/C/R「C:\ image.jpeg」「G:\ backup \ image1.jpeg」'?你的問題寫得不太合理。 – dbenham