Как переименовать папку с номером (например, Папка1, Папка2 и т.д ....) - PullRequest
2 голосов
/ 27 октября 2011

Я в первый раз возлюсь с дос и пакетными файлами и пытаюсь создать "программу" для резервного копирования моих сохранений Minecraft (смеется).Я хочу, чтобы программа переименовала текущее сохранение (в моей папке MinecraftSaves) в «Backup #», прежде чем следующее будет скопировано в папку MinecraftSaves.Его достаточно просто переименовать, но я хочу, чтобы он сохранял несколько папок, каждая из которых увеличивает число в конце имени папки (т.е. Backup1, Backup2, Backup3).Любая помощь?Я просмотрел все, но я не мог найти что-то, что точно соответствовало бы моим потребностям.

@Echo off
title Minecraft Backup
echo.
echo.
echo.
echo Do you want to backup you're Single Player World?
echo.
SET /P ANSWER=Do you want to continue (Y/N)?
if /i {%ANSWER%}=={y} (goto :yes)
if /i {%ANSWER%}=={yes} (goto :yes)
if /i {%ANSWER%}=={n} (goto :no)
if /i {%ANSWER%}=={no} (goto :no)

:no
PING 1.1.1.1 -n 1 -w 1000 >NUL
exit

:yes
ren C:\Users\Josh\Desktop\MinecraftSaves\SinglePlayer Backup
xcopy C:\Users\Josh\AppData\Roaming\.minecraft\saves C:\Users\Josh\Desktop\MinecraftSaves /-y /e /h

Это то, что у меня есть до сих пор.Я хочу изменить следующее, чтобы переименовать папку SinglePlayer в backup1, и при следующем запуске она переименует новую папку SinglePlayer в backup2.Я пытаюсь объяснить это как могу.Может быть, есть более простой способ сделать это.Мне просто нужно сделать резервные копии с номерами в папках резервных копий.Надеюсь, это достаточно ясно.

1 Ответ

5 голосов
/ 27 октября 2011

Простите.Я думаю, я не очень понял ваш вопрос.Однако следующий пакетный файл берет существующую папку с именем CurrentSave и переименовывает ее в Backup- #, добавляя 1 в последнюю существующую папку Backup #.Тире в имени папки облегчает задачу.

@echo off
for /D %%d in (Backup-*) do set lastfolder=%%d
for /F "tokens=2 delims=-" %%n in ("%lastfolder%") do set /A nextnumber=%%n+1
move CurrentSave Backup-%nextnumber%

Если это не то, что вам нужно, сообщите нам более подробную информацию, чтобы мы могли вам помочь.

РЕДАКТИРОВАТЬ

ОК.Код, который я разместил выше, работает правильно, нужна только пара деталей.Ниже приведен код, который вы должны вставить из :yes ярлыка на:

:yes
set lastfolder=Backup-0
for /D %%d in (C:\Users\Josh\Desktop\MinecraftSaves\Backup-*) do set lastfolder=%%~Nd
for /F "tokens=2 delims=-" %%n in ("%lastfolder%") do set /A nextnumber=%%n+1
ren C:\Users\Josh\Desktop\MinecraftSaves\SinglePlayer Backup-%nextnumber%
xcopy C:\Users\Josh\AppData\Roaming\.minecraft\saves C:\Users\Josh\Desktop\MinecraftSaves /-y /e /h

Могу ли я предложить вам еще одну модификацию?

SET /P ANSWER=Do you want to continue (Y/N)?
for %%a in (y yes) do if /i "%ANSWER%"=="%%a" goto yes
:no

Пожалуйста, дайте мне знать, если вы решили свою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...