Scripting
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 文件位於預期的路徑中
您需要在執行腳本之前創建一個“日誌”文件夾
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 /?
更多詳細資訊,請參閱。