2

我第一次搞乱dos和批处理文件,我正在尝试制作一个“程序”来备份我的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。我正在尽力解释这一点。也许有一种更简单的方法可以做到这一点。我只需要它在备份文件夹上使用数字进行备份。希望那足够清楚。

4

1 回答 1

5

打扰一下。我想我并没有真正理解你的问题。但是,以下批处理文件采用名为 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

如果您解决了您的问题,请告诉我。

于 2011-10-27T01:25:15.350 回答