批处理文件,用于附加带有时间戳的文件夹名称并移动到目标目录

时间:2017-08-08 22:55:09

标签: batch-file timestamp append move

在我看来,这似乎是一个常见问题,但我花了几个小时在谷歌上,但未能找到合适的解决方案。

我在源目录中有文件夹: C:\备份

我已设置目标目录: C:\档案

我只需要一个批处理文件: 1)在源目录中为所有文件夹(而不是其中的文件)添加时间戳,并且 2)然后将它们移动到目标目录。

如果出现故障,.bat文件也可以写入日志文件。

这是我找到的代码,但它只复制文件夹内的文件而不是文件夹本身。我需要文件和文件夹,并将时间戳添加到文件夹中。

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

SET "DATE_FOLDER=%YYYY%%MM%%DD%"

cd /d "C:\LC_Data_Review\backups\"
SET "ACHIEVE_DIR=C:\archived_data_packages\" 
md "%ACHIEVE_DIR%" 2>nul

for /r %%a in (*) do (
for /r %%b in (*) do move "%%~b" "%ACHIEVE_DIR%\%%~nb - %DATE_FOLDER%%%~xb"
rd /s /q "%%a"
)

以上代码仅复制文件。

提前感谢能够提供代码的任何人!

凯文

2 个答案:

答案 0 :(得分:0)

您可以使用此脚本来提供帮助。首先,它需要日期和时间,然后将其存储为变量并重命名它。路径中的路径,以及开始和结束路径的起点和终点。

REM Date and time code taken from http://www.winnetmag.com/windowsscripting/article/articleid/9177/windowsscripting_9177.html
@echo off
for /f "tokens=1-7 delims=:/-, " %%i in ('echo exit^|cmd /q /k"prompt $d $t"') do (
   for /f "tokens=2-4 delims=/-,() skip=1" %%a in ('echo.^|date') do (
      set dow=%%i
      set %%a=%%j
      set %%b=%%k
      set %%c=%%l
      set hh=%%m
      set min=%%n
      set ss=%%o
   )
)

echo %dow% %yy%-%mm%-%dd% @ %hh%:%min%:%ss%
pause
      set %%c=%%l
      set hh=%%m
      set min=%%n
      set ss=%%o
   )
)

set filename=%dow% %yy%-%mm%-%dd% @ %hh%:%min%:%ss%
for /D %%f in (C:path) do rename "%%f" "%%~nxf_%filename%"
robocopy c:\start c:\finish /e

答案 1 :(得分:0)

以下是您的解决方案:

假设您创建了一个名为archive.bat的批处理文件,其中包含以下内容:

for /d %%d in (%1\*) do (xcopy "%%d\*" "%2\%%~nxd-%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%" /E /V /I)&&(rd "%%d" /s /q)

你称之为:

archive.bat C:\backups C:\archive

给定文件夹:

C:\backups\one
C:\backups\two

你会得到:

C:\archive\one-YYYY-MM-DD
C:\archive\two-YYYY-MM-DD

YYYY-MM-DD是当前日期。根据需要更改日期格式字符串。

采取的步骤是:

  1. 使用/ d迭代第一个参数(%1)中指定的路径的子目录。
  2. 使用xcopy将每个目录的所有内容移动到第二个参数(%2)中指定的路径的子目录,并附加时间戳。 xcopy / I指定创建新的带时间戳的目录。
  3. 在没有提示的情况下递归删除源目录。
  4. 以下是我测试的输出:

    C:\>dir C:\backups /b /s
    C:\backups\One
    C:\backups\Two
    C:\backups\One\alpha
    C:\backups\One\beta
    C:\backups\One\alpha\New Bitmap Image.bmp
    C:\backups\One\alpha\New Rich Text Document.rtf
    C:\backups\One\alpha\New Text Document.txt
    C:\backups\One\beta\New Bitmap Image.bmp
    C:\backups\One\beta\New Rich Text Document.rtf
    C:\backups\One\beta\New Text Document.txt
    C:\backups\Two\alpha
    C:\backups\Two\beta
    C:\backups\Two\alpha\New Bitmap Image.bmp
    C:\backups\Two\alpha\New Rich Text Document.rtf
    C:\backups\Two\alpha\New Text Document.txt
    C:\backups\Two\beta\New Bitmap Image.bmp
    C:\backups\Two\beta\New Rich Text Document.rtf
    C:\backups\Two\beta\New Text Document.txt
    
    C:\>test C:\backups C:\archive\
    C:\backups\One\alpha\New Bitmap Image.bmp
    C:\backups\One\alpha\New Rich Text Document.rtf
    C:\backups\One\alpha\New Text Document.txt
    C:\backups\One\beta\New Bitmap Image.bmp
    C:\backups\One\beta\New Rich Text Document.rtf
    C:\backups\One\beta\New Text Document.txt
    6 File(s) copied
    
    C:\backups\Two\alpha\New Bitmap Image.bmp
    C:\backups\Two\alpha\New Rich Text Document.rtf
    C:\backups\Two\alpha\New Text Document.txt
    C:\backups\Two\beta\New Bitmap Image.bmp
    C:\backups\Two\beta\New Rich Text Document.rtf
    C:\backups\Two\beta\New Text Document.txt
    6 File(s) copied
    
    C:\>dir C:\archive /b /s
    C:\archive\One-2017-08-09
    C:\archive\Two-2017-08-09
    C:\archive\One-2017-08-09\alpha
    C:\archive\One-2017-08-09\beta
    C:\archive\One-2017-08-09\alpha\New Bitmap Image.bmp
    C:\archive\One-2017-08-09\alpha\New Rich Text Document.rtf
    C:\archive\One-2017-08-09\alpha\New Text Document.txt
    C:\archive\One-2017-08-09\beta\New Bitmap Image.bmp
    C:\archive\One-2017-08-09\beta\New Rich Text Document.rtf
    C:\archive\One-2017-08-09\beta\New Text Document.txt
    C:\archive\Two-2017-08-09\alpha
    C:\archive\Two-2017-08-09\beta
    C:\archive\Two-2017-08-09\alpha\New Bitmap Image.bmp
    C:\archive\Two-2017-08-09\alpha\New Rich Text Document.rtf
    C:\archive\Two-2017-08-09\alpha\New Text Document.txt
    C:\archive\Two-2017-08-09\beta\New Bitmap Image.bmp
    C:\archive\Two-2017-08-09\beta\New Rich Text Document.rtf
    C:\archive\Two-2017-08-09\beta\New Text Document.txt