在我看来,这似乎是一个常见问题,但我花了几个小时在谷歌上,但未能找到合适的解决方案。
我在源目录中有文件夹: 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"
)
以上代码仅复制文件。
提前感谢能够提供代码的任何人!
凯文
答案 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是当前日期。根据需要更改日期格式字符串。
采取的步骤是:
以下是我测试的输出:
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