Batch file 批处理文件中包含日期的目录

Batch file 批处理文件中包含日期的目录,batch-file,cmd,Batch File,Cmd,我正试图创建一个批处理文件,但我的目录中必须有今天的日期,这部分我被卡住了。此时此刻,我得到: C:\Preventive Maintenance\07 LogFiles\Workflow 但我想得到: C:\Preventive Maintenance\07 LogFiles\Workflow\dateoftoday 今天的日期应为YYYY-MM-DD 下面是我拥有的一段代码,如果有人能修改这段代码,那将非常有帮助,因为我现在一点线索也没有 @echo on set LogFilePath

我正试图创建一个批处理文件,但我的目录中必须有今天的日期,这部分我被卡住了。此时此刻,我得到:

C:\Preventive Maintenance\07 LogFiles\Workflow

但我想得到:

C:\Preventive Maintenance\07 LogFiles\Workflow\dateoftoday

今天的日期应为YYYY-MM-DD

下面是我拥有的一段代码,如果有人能修改这段代码,那将非常有帮助,因为我现在一点线索也没有

 @echo on

set LogFilePath=C:\ProgramData\Proficy\Logs
set OutputFilePath=C:\Preventive Maintenance\07 LogFiles\Workflow
set X=
for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do if not defined X set X=%%x

set DATE.YEAR=%X:~0,4%
set DATE.MONTH=%X:~4,2%
set DATE.DAY=%X:~6,2%
set mydate=%DATE.YEAR%-%DATE.MONTH%-%DATE.DAY%

mkdir "%OutputFilePath%"
cd /d %LogFilePath%

xcopy /s /f /y "%LogFilePath%\ProficyClient.log" "%OutputFilePath%\%mydate%\*"
xcopy /s /f /y "%LogFilePath%\SOAServer.log" "%OutputFilePath%\%mydate%\*"

这就是您所寻找的有关mydate环境变量的信息吗

set mydate=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%
我可能会将您的
设置OutputFilePath
添加到mydate内容之后,并使OutputFilePath成为全部内容

set OutputFilePath=C:\Preventive Maintenance\07 LogFiles\Workflow\%mydate%

最后,我推荐robocopy而不是xcopy。语法有点不寻常,但它的弹性更大,并且有其他选项使它更适合在批处理文件中运行。

这就是关于mydate环境变量的要求吗

set mydate=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%
我可能会将您的
设置OutputFilePath
添加到mydate内容之后,并使OutputFilePath成为全部内容

set OutputFilePath=C:\Preventive Maintenance\07 LogFiles\Workflow\%mydate%

最后,我推荐robocopy而不是xcopy。语法有点不寻常,但它更具弹性,并且有其他选项,使其更适合在批处理文件中运行。

因此,这是让我获得所需批处理文件和所需目录的代码

@echo on

set LogFilePath=C:\ProgramData\Proficy\Logs
set X=
for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do if not defined X set X=%%x

set DATE.YEAR=%X:~0,4%
set DATE.MONTH=%X:~4,2%
set DATE.DAY=%X:~6,2%
set mydate=%DATE.YEAR%-%DATE.MONTH%-%DATE.DAY%

set OutputFilePath=C:\Dimensys Preventive Maintenance\07 LogFiles\Workflow\%mydate%

mkdir "%OutputFilePath%"
cd /d %LogFilePath%

robocopy /s /f /y "%LogFilePath%\ProficyClient.log" "%OutputFilePath%\%mydate%\*"
robocopy /s /f /y "%LogFilePath%\SOAServer.log" "%OutputFilePath%\%mydate%\*"

谢谢@theglossy1,你把我推向了正确的方向

这就是代码,它让我得到了想要的批处理文件和想要的目录

@echo on

set LogFilePath=C:\ProgramData\Proficy\Logs
set X=
for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do if not defined X set X=%%x

set DATE.YEAR=%X:~0,4%
set DATE.MONTH=%X:~4,2%
set DATE.DAY=%X:~6,2%
set mydate=%DATE.YEAR%-%DATE.MONTH%-%DATE.DAY%

set OutputFilePath=C:\Dimensys Preventive Maintenance\07 LogFiles\Workflow\%mydate%

mkdir "%OutputFilePath%"
cd /d %LogFilePath%

robocopy /s /f /y "%LogFilePath%\ProficyClient.log" "%OutputFilePath%\%mydate%\*"
robocopy /s /f /y "%LogFilePath%\SOAServer.log" "%OutputFilePath%\%mydate%\*"

谢谢@theglossy1,你把我推向了正确的方向

现在我使用您建议的代码,但现在我得到了:C:\Preventive Maintenance\07 LogFiles\Workflow \-4 \-01,虽然差不多了,但还不太清楚!你知道问题出在哪里了吗,因为我以前从未编写过批处理文件。现在我使用你建议的代码,但我现在得到了:C:\Preventive Maintenance\07 LogFiles\Workflow \-4 \-01,差不多到了,但还不完全到!你知道问题出在哪里了吗,因为我以前从来没有写过批处理文件。使用
wmic
缓解日期格式的地区差异是个不错的选择。这在任何地方都适用。使用
set“mydate=%X:~0,4%-%X:~4,2%-%X:~6,2%”
将省去对几个变量的需要。我不敢相信这会满足您的需要,因为您要将日期目录追加两次……使用
wmic
来缓解日期格式的区域差异是一个不错的选择。这在任何地方都适用。使用
设置“mydate=%X:~0,4%-%X:~4,2%-%X:~6,2%”
将省去对几个变量的需要。我不敢相信这会满足您的要求,因为您将日期目录追加了两次……有什么不符合您的预期?代码应该可以很好地工作(尽管可以更容易地完成)。您想复制两个专用的
.log
文件,对吗?那么,为什么要声明
xcopy
/s
选项呢?有什么不符合您的预期?代码应该可以很好地工作(尽管可以更容易地完成)。您想复制两个专用的
.log
文件,对吗?那么为什么要声明
xcopy
/s
选项呢?