首页 > 解决方案 > 创建最新文件版本的副本,并在 windows 批处理文件中将文件名中的版本增加一个

问题描述

我有多个文件夹,里面有多个版本文件。例如文件名_v1-xx.xlsx。我正在寻找一种方法,通过批处理文件找到最高的 xx 编号,并创建文件名更改为 xx+1 的文件副本。

因此,如果它找到 filename_v1-55.xlsx,它需要在名为 filename_v1-56.xlsx 的同一文件夹中创建一个副本。

我发现了这个:选择最高编号的文件 - 批处理文件,它允许我找到最高的文件编号,但我不知道如何使用新文件名创建新文件。

到目前为止,我所拥有的是:

@echo off
setlocal enabledelayedexpansion
set max=0
for %%x in (Camera-Data-v1-*.xlsx) do (
  set "FN=%%~nx"
  set "FN=!FN:Camera-Data-v1-=!"
  if !FN! GTR !max! set max=!FN!
)
echo highest version: Camera-Data-v1-%max%.xlsx
set newMax=%max%+1
echo Camera-Data-v1-%newMax%.xlsx
pause

这个回声。“最高版本:Camera-Data-v1-74.xlsx Camera-Data-v1-74+1.xlsx”

所以我认为set newMax=%max%+1这是错误的,我使用 echo 而不是 copy 进行测试,如果 echo 显示正确的文件名,我将更改为copy Camera-Data-v1-%max%.xlsx Camera-Data-v1-%newMax%.xlsx.

文件名中的变量编号总是两个字符,有时以 0 开头。

标签: windowsbatch-filecmd

解决方案


已解决,谢谢@Aacini 完美!

@echo off
setlocal enabledelayedexpansion
set max=0
for %%x in (Camera-Data-v1-*.xlsx) do (
  set "FN=%%~nx"
  set "FN=!FN:Camera-Data-v1-=!"
  if !FN! GTR !max! set max=!FN!
)
echo highest version: Camera-Data-v1-%max%.xlsx
set /A newMax=%max%+1
copy Camera-Data-v1-%max%.xlsx Camera-Data-v1-%newMax%.xlsx
pause

推荐阅读