创建最新文件版本的副本,然后在Windows批处理文件中将文件名中的版本增加一个

时间:2018-09-27 10:51:36

标签: windows batch-file versioning

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

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

我发现了这一点:Choose Highest Numbered File - Batch File使我能够找到最大的文件编号,但是我不知道如何用新文件名创建新文件。

到目前为止,我有:

@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开头。

1 个答案:

答案 0 :(得分:1)

解决了,谢谢@Aacini运作完美!

public JObject GetStatus(GetStatusRequest request)
{
    var responseArr = new JArray();
    var customers = GetCustomers(request.CustomerId);

    foreach (var c in customers)
    {
        responseArr.Add(FormatRequest(customers));
    }

    return new JObject
    {
        ["customers"] = responseArr
    };
}