我想使用 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/