我第一次搞乱dos和批处理文件,我正在尝试制作一个“程序”来备份我的Minecraft保存(lol)。我希望程序在将下一个保存复制到MinecraftSaves文件夹之前将当前保存(在我的MinecraftSaves文件夹中)重命名为“Backup#”。它很简单,可以重命名,但我希望它保存多个文件夹,每个文件夹在文件夹名称的末尾递增一个数字(即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。我想尽力解释这个问题。也许这是一种更简单的方法。我只需要用备份文件夹上的数字进行备份。希望这足够清楚。
答案 0 :(得分:5)
对不起。我想我真的不明白你的问题。但是,以下批处理文件将使用名为CurrentSave的现有文件夹并将其重命名为Backup-#将1添加到最后一个Backup- #existent文件夹。文件夹名称中的破折号使事情变得更容易。
@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
如果你解决了问题,请告诉我。