我有以下脚本来在用户登录时备份文件。它保存在批处理文件中。它在复制文件时也会创建日志。现在我想编辑脚本,这样它也可以保存文件被复制的日期和时间......请你帮忙谢谢
@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"
答案 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
这将设置变量Day
,DayofWeek
,Hour
,Minute
,Month
,Quarter
,Second
,然后,您可以使用WeekInMonth
和Year
。
答案 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
值取决于您的区域设置)