Batch file 批处理文件,用于附加带有时间戳的文件夹名称并移动到目标目录
在我看来,这似乎是一个常见的问题,但我在谷歌上花了几个小时,还没有找到一个合适的解决方案 我在源目录中有文件夹: C:\备份 我已设置目标目录: C:\archive 我只需要一个批处理文件,该文件将: 1) 向源目录中的所有文件夹(而不是其中的文件)添加时间戳,然后 2) 然后将它们移动到目标目录 如果.bat文件也可以写入日志文件以防出现故障,那就太好了 这是我找到的代码,但它只复制文件夹中的文件,而不是文件夹本身。我需要文件和文件夹,并将时间戳添加到文件夹中Batch file 批处理文件,用于附加带有时间戳的文件夹名称并移动到目标目录,batch-file,timestamp,append,move,Batch File,Timestamp,Append,Move,在我看来,这似乎是一个常见的问题,但我在谷歌上花了几个小时,还没有找到一个合适的解决方案 我在源目录中有文件夹: C:\备份 我已设置目标目录: C:\archive 我只需要一个批处理文件,该文件将: 1) 向源目录中的所有文件夹(而不是其中的文件)添加时间戳,然后 2) 然后将它们移动到目标目录 如果.bat文件也可以写入日志文件以防出现故障,那就太好了 这是我找到的代码,但它只复制文件夹中的文件,而不是文件夹本身。我需要文件和文件夹,并将时间戳添加到文件夹中 @echo off for /
@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"
)
以上代码仅复制文件
提前感谢所有能够提供代码的人
Kevin您可以使用此脚本来帮助。首先,它获取日期和时间,然后将其存储为变量并重命名。路径为路径中的路径,起点和终点为起点和终点位置的路径
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
这里有一个解决方案: 假设您创建了一个名为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
谢谢金桔提供的有用信息。我会在早上运行它,让你知道它是如何工作的!再次感谢你!我不确定用什么替换“C:path”,所以我使用了源目录的路径。.bat文件只复制子文件夹,但不复制其中的任何文件,并且没有附加任何带有时间戳的内容。我需要复制文件夹及其文件。而且,原始文件夹仍然保留在源目录中,而没有移动到目标。@Systech,哎呀,真是抱歉。看来你已经找到答案了,干得好!不用担心,再次感谢你的帮助。我很感激!谢谢你提供的有用信息。我明天早上回来报到。非常感谢!这很有效!非常感谢。如何让脚本复制子目录中的文件?此脚本已经编写为使用xcopy/E参数递归复制文件,该参数甚至复制空目录(如果需要,请随意更改)。我已经添加了显示递归文件副本的测试输出。如果你喜欢这一行解决方案,别忘了投票。我一定是做错了什么。它现在工作得很好!非常感谢!