0

所以我得到了我的答案

如何在其名称中创建具有当前日期的文件夹并将所有文件和文件夹从 Windows 10 上的某个路径复制到其中

问题,但因为这是一个重复的问题,我是这个论坛的新手 -它已关闭,我无法在类似主题中提出其他问题

通过使用这个如何根据当前日期创建子文件夹?解决方案我能够实现我想要的[非常感谢用户组合]

所以这段代码工作正常:

@Echo Off
Set "sd=C:\Users\YOUR USER NAME\AppData\Roaming\Mozilla\Firefox\Profiles\fsj89244"
Set "dd=D:\Backup Copies\Firefox\Profile"
Set "ds="
If Not Exist "%sd%\" Exit /B
For /F "Tokens=1-3Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null'
) Do If Not Defined ds Set "ds=%%A %%B %%C"
If Not Defined ds Exit /B
RoboCopy "%sd%" "%dd%\%ds%" /E

它会创建一个名称中带有日期 [on drive D] 的子文件夹,然后将指定路径 [from drive C] 中的所有内容复制到它。这加快了我手动创建备份副本的速度

但是如果再次执行脚本,我需要它首先检查这样的子文件夹是否存在。如果是,则不要理会它并创建一个名称为日期格式的文件夹>>YYYY MM DD v2<<; 以及下一次>>YYYY MM DD v3<<等,当操作系统中的日期更改为第二天时,这将停止发生

4

1 回答 1

0
Set "ds="
For /F "Tokens=1-3Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null'
) Do If Not Defined ds Set "ds=%%A %%B %%C"
If Not Defined ds Exit /B
set ver=0
for /f "tokens=3,4 delims=v " %%a in ('dir /ad /on /b "%ds%*"') do set /a ver=%%b+1
set "newFolder=%ds% v%ver%"
md "%newFolder: v0=%"

dir /ad /on将按名称对文件夹进行排序,并for以最后一个版本加一结尾(显然for /d %%a in ("%ds%*") do set /a ver+=1只计算找到的文件夹,因此如果文件夹因任何原因丢失并且可能会使用已经“占用”的文件夹,则将是不正确的)

一天中的第一个文件夹将采用该格式YYYY MM DD,所有其他文件夹将采用该格式YYYY MM DD vX。如果您希望第一个文件夹具有相同的格式 ( ... v0),请使用md "%newFolder%.

于 2021-04-15T18:11:55.607 回答