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

标签 windows batch-file copy increment

我想使用 Windows 批处理文件将文件 (myfile0001.bdg) 从一个特定目录复制到另一个目录。但是我想检查目标目录中的文件是否存在,如果答案是,则将文件递增0001并再次检查文件是否存在(myfile0002.bdg)等等,直到文件不存在,然后复制具有新标题的文件。

所以,如果在目标目录中,我有这些文件:

myfile0001.bdg
myfile0002.bdg
myfile0003.bdg
myfile0004.bdg
myfile0005.bdg
myfile0006.bdg

新文件应命名为 myfile0007.bdg。下次执行批处理时,新文件将是 myfile0008.bdg 等。

我知道有一个命令“IF EXIST”,但我不知道该怎么做。

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

  • 我使用的是 Windows 7 x32
  • 源目录是“C:\USERS\RAMBYTES\DOCUMENTS\”
  • 目标目录是“P:\BACKUP\”
  • 文件是“MYFILE0001.BDG”

最佳答案

像这样:

@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

如果目标目录中存在超过 1000 个文件,则不会进行错误处理。如果你想增加文件限制,你需要调整“主”for循环和子程序中数字的“格式”

添加前导零的技巧取自此处:https://stackoverflow.com/a/9430912/330315

关于Windows:复制文件直到文件不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15187020/

相关文章:

windows - 有没有办法在 Windows 中的脚本运行期间将 stderr 重定向到 stdout?

batch-file - Mogrify 子文件夹并保留原始目录结构

c++ - 将渲染目标数据复制到 D3DPOOL_MANAGED?

Java,clone()问题?

python - 在 Windows 中使用资源

windows - 获取代表本地系统内置帐户的 PSCredential 实例

windows - 如何使用 MSYS2 在 Windows 上安装 GTK3 和 minGW

python - 使用 Apache Webserver 从 Python CGI 文件运行 .bat 文件

batch-file - 批处理 - xcopy 早于 x 分钟的文件

windows - Powershell:获取 FQDN 主机名