Windows:复制文件,直到文件不存在

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等.

我知道有一个命令"如果存在",但我不知道做我需要的.

==============

  • 我在Windows 7 x32下
  • 源目录是"C:\ USERS\RAMBYTES\DOCUMENTS \"
  • 目标目录是"P:\ BACKUP \"
  • 该文件是"MYFILE0001.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/