使用版本和日期创建文件夹

时间:2013-02-07 17:39:35

标签: batch-file

这里的第一个问题。我已经使用批处理文件来自动执行大量操作,但这个操作变得非常困难。

想象一下,我有一个文件夹(我们称之为'ProjectFolder'),我在这个项目文件夹中有一些文件夹(让我们称之为'数据','工具,'垃圾'),每个文件夹都有文件。 我想要的是在'ProjectFolder'内创建一个'backup'文件夹,在这个文件夹中创建一个名为'v001_date_time_user'的文件夹,并在此文件夹中复制文件夹'data'和'tools'。 然后我再次运行此脚本以创建新版本,并创建“v002_date_time_user”并再次复制相同的“数据”和“工具”文件夹和文件。

我现在可以做的是在'backup'文件夹中创建一个名为'v_date_time_user'的文件夹,但我不知道如何创建3位数的版本部分。

这是我现在的代码:

@echo off & setlocal enableextensions

:: variables
set dateNtime="[%date:~6,6%-%date:~3,2%-%date:~0,2%]_[%time:~0,2%-%time:~3,2%]"
set backup="backup"

set /A version=000

set backupcmd=xcopy /s /c /d /e /h /i /r /k /y

:: check for existence of [backup]
:: if [backup] doesn't exist, create it
if not exist "%backup%\" (
  echo folder "%backup%" not found
  echo creating folder "%backup%"
  md "%backup%" 
  )

:: create version folder with version number_date_hour_user
md "%backup%\v%version%_%dateNtime%_[%USERNAME%]"

:: copy older version into newer version
xcopy "data" "%backup%\v%version%_%dateNtime%_[%USERNAME%]\data" /E /C /I /H /Q 
xcopy "tools" "%backup%\v%version%_%dateNtime%_[%USERNAME%]\tools" /E /C /I /H /Q 

任何人都可以帮忙吗? 谢谢 路易斯

1 个答案:

答案 0 :(得分:0)

我可以想到几种方法。您可以循环遍历以v和数字开头的每个文件夹,并对它们进行计数。然后,如果你从000开始,那么匹配的数量将是你的下一个数字。

@echo off
setlocal enabledelayedexpansion
:: if you're starting with 001 rather than 000, then set count=1 instead of 0 here.
set count=0
pushd "path\to\ProjectFolder\backup"
for /f %%I in ('dir /b v* ^| findstr "^v[0-9][0-9][0-9]"') do set /a count=!count!+1
popd
set count=00%count%
set count=%count:~-3%

然后%count%将是您的下一个号码。

另一种方法是循环遍历dir /b /o:n(字母排序)并捕获最后一个目录名,大概是v ###,其编号最高。然后抓住该捕获的前四个字符并切断v。