Назад | Перейти на главную страницу

Имя файла журнала сценария развертывания веб-сайта Robocopy усечено в AM

Это сценарий развертывания веб-сайта IIS, который я начал писать. Он перемещает файлы из каталога A в каталог B и создает файл журнала с датой / временем в качестве имени файла. Когда он запускается в часы AM, временная часть имени файла журнала усекается из-за пробелов. Как я могу это исправить, чтобы он работал все время в течение дня (например: 00.00.01, 00.00.11, 00.01.11, 00.11.11, 01.11.11 и 11.11.11, чтобы дать вам несколько примеров)? Если вам нравятся "9", используйте "9". Усечение происходит, когда у нас есть нули в имени файла .. Я думаю, что он обрабатывает его как пробел. Прошло несколько месяцев с тех пор, как я посмотрел на это, но появились более важные проекты, и я отложил это в сторону. Мы просто планируем развертывание на вечер. Ха-ха! По сути, я хочу использовать как можно меньше операторов 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

Вы можете сделать это с помощью подстановки переменных, изменив ...

SET THH=%time:~0,2%

... чтобы ...

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

Вторая строка заменяет все пробелы в %THH% с нулями.

Видеть SET /? Больше подробностей.

Мне пришлось несколько раз прочитать ваш вопрос, чтобы понять его. Я думаю, вам нужно поменять только вашу настройку переменной 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