Это сценарий развертывания веб-сайта 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