Создайте копию последней версии файла и увеличьте версию в имени файла на единицу в пакетном файле Windows. - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть несколько папок с несколькими версионными файлами.Например, filename_v1-xx.xlsx.Я ищу способ, через пакетный файл, чтобы найти наибольшее число хх, и создать копию файла с именем файла, измененным на хх + 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, что неправильно, я использую эхо вместоскопируйте для тестирования, если эхо говорит правильное имя файла, я изменю на copy Camera-Data-v1-%max%.xlsx Camera-Data-v1-%newMax%.xlsx.

Номер переменной в имени файла всегда будет состоять из двух символов, иногда начиная с 0.

1 Ответ

0 голосов
/ 27 сентября 2018

Решено, спасибо @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
...