我目前在Powershell脚本的顶部定义了所有变量,包括具有动态名称的日志文件:
$log = '\\serv1\Log\dev-Log' + $(get-date -f yyyy-MM-dd) + '.log'
然后,这将为$ log变量赋值:
\\serv1\Log\dev-Log2017-10-20.log
我现在正计划将所有这些特定于环境的变量移动到单独的XML配置文件中,并且我不太清楚如何在动态名称方面做类似的事情。我目前有一个包含以下内容的XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<settings>
<process>FALSE</process>
<xmlDir>\\serv1\dev</xmlDir>
<scanDir>\\serv1\dev</scanDir>
<processedDir>\\serv1\dev\done</processedDir>
<errorDir>\\serv1\dev\err</errorDir>
<log>\\serv1\dev\log\dev-Log' + $(get-date -f yyyy-MM-dd) + '.log</log>
</settings>
当我读入配置变量时如下:
[xml]$configFile = Get-Content $PSScriptRoot\settings.xml
$log = $configFile.settings.log
它给了我:
\\serv1\dev\log\dev-Log' + $(get-date -f yyyy-MM-dd) + '.log
有没有办法让这个日志文件名动态化,这是从XML检索信息的最佳方法吗?
任何帮助非常感谢。感谢。
答案 0 :(得分:1)
如果要在执行脚本时填充日期,可以在XML中放置占位符,然后在执行时替换它。例如:
XML:
os.system('command & pause')
代码:
ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.apiInfo(apiInfo())
.securitySchemes(securitySchemes())
.select()
.apis(RequestHandlerSelectors.any())
.paths(Predicates.not(PathSelectors.regex("/actuator.*")))
.build();
答案 1 :(得分:1)
其他方法:您可以使用-format(或-f):
XML:
<?xml version="1.0" encoding="utf-8" ?>
<settings>
<process>FALSE</process>
<xmlDir>\\serv1\dev</xmlDir>
<scanDir>\\serv1\dev</scanDir>
<processedDir>\\serv1\dev\done</processedDir>
<errorDir>\\serv1\dev\err</errorDir>
<log>\\serv1\dev\log\dev-Log{0:yyyy-MM-dd}.log</log>
</settings>
代码:
[xml]$configFile = get-content "c:\temp\test.xml.txt"
$configFile.settings.log -f (get-date)