Scripting

Robocopy 網站部署腳本日誌文件名在 AM 中被截斷

  • August 4, 2011

這是我開始寫的一個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 文件位於預期的路徑中

  • 您需要在執行腳本之前創建一個“日誌”文件夾

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

我不得不閱讀你的問題幾次才能理解它。我認為你需要換掉你對 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

你可以用變數替換來做到這一點,通過改變……

SET THH=%time:~0,2%

…到…

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

第二行%THH%用 0 替換所有空格。

有關SET /?更多詳細資訊,請參閱。

引用自:https://serverfault.com/questions/297413