Batch file 如何用数字重命名文件夹(如Folder1、Folder2等)

Batch file 如何用数字重命名文件夹(如Folder1、Folder2等),batch-file,dos,batch-rename,Batch File,Dos,Batch Rename,我第一次乱搞dos和批处理文件,我正试图制作一个“程序”来备份我的Minecraft保存(lol)。我希望程序将当前保存(在我的MinecraftSaves文件夹中)重命名为“备份”,然后再将下一个保存复制到MinecraftSaves文件夹中。重命名它很简单,但我希望它保存多个文件夹,每个文件夹在文件夹名称末尾增加一个数字(即Backup1、Backup2、Backup3)。有什么帮助吗?我到处找了,但找不到完全符合我需要的东西 @Echo off title Minecraft Backup

我第一次乱搞dos和批处理文件,我正试图制作一个“程序”来备份我的Minecraft保存(lol)。我希望程序将当前保存(在我的MinecraftSaves文件夹中)重命名为“备份”,然后再将下一个保存复制到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。我正在尽力解释这件事。也许有一种更简单的方法。我只需要它在备份文件夹上用数字进行备份。希望这足够清楚。

对不起。我想我没有真正理解你的问题。但是,下面的批处理文件获取一个名为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
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

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

我不确定是否理解您的问题。您打算如何运行此批处理脚本?我只是将其保存为.bat文件并运行它以备份我的保存。我有实际的备份,我只需要重命名一个文件夹。作为一个可能的选择,你可以考虑使用Python。有一个简单的例子,语法明显比批处理文件更友好。我想使用批处理。抱歉:(+1.我喜欢查找上次使用的号码的简单方法。至于提取号码本身,我认为您也可以使用
SET/A nextnumber=%lastfolder:~7%+1
(也就是说,不使用
for/F
循环)@AndriyM:是的,你说得对。根据询问者的要求,这种修改还允许使用
备份
名称,不带破折号。