Robocopy 网站部署脚本日志文件名在 AM 中被截断

Robocopy 网站部署脚本日志文件名在 AM 中被截断

这是我开始编写的 IIS 网站部署脚本。它将文件从目录 A 移动到目录 B,并创建一个以日期/时间为文件名的日志文件。当它在上午运行时,日志文件名的时间部分会因为空格而被截断。我该如何解决这个问题,以便它在一天中的所有时间都有效(例如:00.00.01、00.00.11、00.01.11、00.11.11、01.11.11 和 11.11.11 等)?如果您喜欢“9”,则使用 9。当文件名中有 0 时,就会发生截断。我认为它将其视为空格。我已经几个月没有看过这个了,但出现了更重要的项目,我把它放在一边。我们现在只是在晚上安排部署。哈哈!本质上,我希望使用尽可能少的 IF 语句——但如果你有很多,我并不关心。如果你的武器库里有任何东西,那就太棒了!:-) 脚本使用“。”(而不是“:”)作为时间分隔符,因为文件名中不允许使用冒号。如果你被难住了,只需说“MacGruber!”并喝一杯你的健怡百事可乐。

先决条件:
- 您需要已创建 UI.Web 文件夹
- 您需要将 Robocopy.exe 文件放在其期望的路径中
- 您需要在运行脚本之前创建一个“logs”文件夹

REM **************************************************************
REM * TITLE:   LIMS Deployment Script                            *
REM * AUTHOR:  MacGyver                                          *
REM * PURPOSE: Deployment Script for IIS Web Server Files        *
REM *          - include all files recursively                   *
REM *          - excluded folders: .svn/obj                      *
REM *          - excluded files:   *.config, *.vb, *.cs, *.resx, *
REM *            *.vbproj, *.user, *.suo, AND others             *
REM * ASSUMES: UI.Web folder already exists                      *
REM **************************************************************

SET ROBOCOPY=".\robocopy.exe"
SET SOURCEDIR="\\tsclient\C\Source\websitename\UI.Web"
SET TARGETDIR="D:\web\docs\UI.Web"

SET DYYYY=%date:~-4,4%
SET DMM=%date:~-10,2%
SET DDD=%date:~-7,2%

SET THH=%time:~0,2%
SET TMM=%time:~3,2%
SET TSS=%time:~6,2%

REM - copy from one folder to another - the time doesn't work if you deploy the code in the AM, we need to fix that
%ROBOCOPY% %TARGETDIR% %TARGETDIR%_%DYYYY%-%DMM%-%DDD%_%THH%.%TMM%.%TSS% /S

REM - modify original folder with deployment changes & log the changes to a *.log file
%ROBOCOPY% %SOURCEDIR% %TARGETDIR% *.* /S /NP /XO /XD .svn obj /XF *.config *.vb *.cs *.resx *.vbproj *.user *.resources *.user *.suo > .\logs\Deployed_%DYYYY%-%DMM%-%DDD%_%THH%.%TMM%.%TSS%.log

iisreset

答案1

我不得不读了几遍你的问题才明白。我认为你需要替换掉 THH 变量的设置。更改:

SET THH=%time:~0,2%

FOR /F "tokens=1-3 delims=: " %%a IN ('TIME /t') DO SET THH=%%a

如果它删掉了分钟的整两位数字,你可以将 TMM 换成

FOR /F "tokens=1-3 delims=: " %%a IN ('TIME /t') DO SET TMM=%%b

答案2

您可以通过变量替换来做到这一点,通过改变......

SET THH=%time:~0,2%

...到...

SET THH=%time:~0,2%
SET THH=%THH: =0%

第二行将所有空格替换%THH%为 0。

请参阅SET /?此处了解更多详情。

相关内容