windows - 创建最新文件版本的副本,并在 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 开头。
解决方案
已解决,谢谢@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
推荐阅读
- html - 无法正确设置设备宽度,有东西伸出
- asp.net-core-webapi - 如何防止访问者通过 URL 在浏览器中访问我网站的 API?
- javascript - lodash/fp - 如何从@types/lodash 增加打字稿类型?
- c - 递归搜索迷宫中的路径
- javascript - 在 Internet Explorer 中查找父“SVG”元素
- r - 在 kableExtra 中使用组作为表头
- xml - Xpath 过滤器字符串中的多个值
- android - 如何在 previewView 或其他活动中使用 CameraX api 显示捕获的图像?
- reactjs - 反应,道具不渲染
- java - Java 正则表达式匹配到 arraylist