批处理文件添加日期到文件名

时间:2018-10-31 12:13:26

标签: batch-file

2年前,我编写了一个批处理文件,该文件似乎非常有用,每天可以制作一个excel电子表格的备份副本。突然,第一天它停止正常工作,开始按字面值分配变量,而不是拉出实际日期,因此它每天都开始覆盖自身。

我从获得此文件名开始: 美味时间表2018-04-30-2018

现在获取此文件名: 2018年美味时间表-〜4,2-〜6,2-〜0,4

看一下代码,这些值的来源似乎很明显,但是我不确定为什么不再拉日期。我假设必须要进行某种类型的系统更新才能更改此内容?解决此问题的最佳方法是什么?请在下面查看我当前的代码:

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
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 stamp=%MM%-%DD%-%YYYY%

copy "J:\TROY C\2018 Schedule\Tasty Schedule 2018.xlsx" "J:\Joe's Folder\ChocScheduleBackUps\Tasty Schedule 2018 - %stamp%.xlsx"

3 个答案:

答案 0 :(得分:1)

在命令提示符下启动以下命令:

wmic OS Get localdatetime

这应该显示日期,您可以从那里开始。

验证您的语言环境设置:提到的WMIC命令取决于语言环境。

为了使WMIC工作,在命令提示符下运行set PATH时,需要查看以下内容:

C:\Program Files\7-Zip>set PATH
Path=...;C:\WINDOWS\System32\Wbem;...

(请勿修改C:\Windows目录,您的计算机将无法再使用)

答案 1 :(得分:1)

我通过在路径中添加“ C:\ Windows \ System32 \ wbem \”来解决我的问题,以便WMIC可以正常工作,并且还在路径中添加了“ C:\ Windows \ System32 \”以使FIND可以工作。

答案 2 :(得分:0)

以下是使用RoboCopy的示例:

@Echo Off
Set "dStamp="
For /F "Tokens=1-3 Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null') Do If Not Defined dStamp Set "dStamp=%%B-%%C-%%A"
If Defined dStamp Copy "J:\TROY C\2018 Schedule\Tasty Schedule 2018.xlsx" "J:\Joe's Folder\ChocScheduleBackUps\Tasty Schedule 2018 - %dStamp%.xlsx"