批处理文件到备份文件

时间:2014-06-22 08:22:29

标签: batch-file cmd

我有以下脚本来在用户登录时备份文件。它保存在批处理文件中。它在复制文件时也会创建日志。现在我想编辑脚本,这样它也可以保存文件被复制的日期和时间......请你帮忙谢谢

@echo off
REM copy documents
xcopy "C:\Users\user1\Desktop\the folder\the file.xlsm" "C:\Users\user1\Desktop\the folder\Backup\" /c /r /d /y > "C:\Users\user1\Desktop\the folder\Backup\xcopy.log"

3 个答案:

答案 0 :(得分:1)

您可以使用以下代码段以区域设置无关的方式获取日期和时间:

for /f "skip=1" %%x in ('wmic OS GET LocalDateTime') do if not defined LocalDateTime set LocalDateTime=%%x
set MyDate=%LocalDateTime:~0,8%
set MyTime=%LocalDateTime:~8,6%

这是本地时间,因此您在一个DST边界处获得两次相同的小时,这对于日志文件来说并不理想。我建议专门为这些目的使用UTC:

for /f %%x in ('wmic path win32_utctime get /format:list ^| findstr "="') do set %%x

这将设置变量DayDayofWeekHourMinuteMonthQuarterSecond,然后,您可以使用WeekInMonthYear

答案 1 :(得分:1)

这与区域日期/时间格式无关:

for /f "tokens=1" %%I in ('wmic os get localdatetime ^|find "20"') do set dt=%%I
REM dt format is now YYYYMMDDhhmmss
echo DateTimeString: %dt%
REM from here you can format Date/Time as you need it:
set dat=%dt:~4,2%-%dt:~2,2%-%dt:~0,4%
echo formatted DateTimeString: %dat%

set tim=%dt:~8,4%
echo Time unformatted without Date: %tim%
set tims=%dt:~8,2%:%dt:~10,2%:%dt:~12,2%
echo Time formatted: %tims%

注意:如果您想将日期/时间写入文件名,最佳选择将是YYYYMMDDhhmm格式,因为这样文件将按时间顺序排序。

xcopy "source" "destination" > "path\xcopy-%dt%.log"

要将日期/时间写入文件,请使用

echo %dat%-%tims% >> "path\xcopy.log"

答案 2 :(得分:0)

For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
echo %mydate%_%mytime% >> xcopy.log

delims值取决于您的区域设置)