use*_*046 5 windows copy batch-file increment
我想使用Windows批处理文件将文件(myfile0001.bdg)从一个特定目录复制到另一个目录.但我想检查目标目录中的文件是否存在,如果答案是肯定的,则将文件增加为0001并再次检查文件是否存在(myfile0002.bdg)等等,直到文件不存在为止,并复制带有新标题的文件.
所以,如果在目标目录中,我有这些文件:
myfile0001.bdg myfile0002.bdg myfile0003.bdg myfile0004.bdg myfile0005.bdg myfile0006.bdg
新文件应命名为myfile0007.bdg.下次我将执行批处理时,新文件将是myfile0008.bdg等.
我知道有一个命令"如果存在",但我不知道做我需要的.
==============
小智 1
像这样的东西:
@echo off
set source_file=C:\USERS\RAMBYTES\DOCUMENTS\MYFILE0001.BDG
set target_dir=P:\BACKUP\
set done=0
for /l %%i in (1,1,1000) do (
call :check_and_copy %%i
if errorlevel 1 goto :eof
)
goto :eof
:check_and_copy
setlocal EnableDelayedExpansion
set num=000000%1
set fnum=!num:~-4!
set fname=%target_dir%\myfile%fnum%.bdg
rem echo %fname%
if not exist "%fname%" (
echo copying %source_file% to %fname%
exit /b 1
)
exit /b 0
Run Code Online (Sandbox Code Playgroud)
如果目标目录中存在超过 1000 个文件,则不会发生错误处理。如果要增加文件限制,需要调整“主”for循环以及子程序中数字的“格式”
添加前导零的技巧取自此处:/sf/answers/660163871/