Powershell创建文件夹的名称

时间:2020-10-29 16:43:03

标签: powershell

因此,我尝试创建一个文件夹,在其中合并2个字符串并获取日期;像这样:

2345__OPEXs_datetime

我的代码:

Get-ChildItem 'C:\Scripts\MetadataExport' | New-Item -Name (Get-ChildItem 'C:\Scripts\MetadataExport' -Name).Split('-')[2] + '_XIPs' + "_$((Get-Date).ToString('yyyy-MM-dd'))" -ItemType Directory -Force

但这给了我以下错误:

  New-Item : A positional parameter cannot be found that accepts argument '_XIPs'.
  At line:1 char:45
  + ... taExport' | New-Item -Name (Get-ChildItem 'C:\Scripts\MetadataExport' ...
  +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  + CategoryInfo          : InvalidArgument: (:) [New-Item], ParameterBindingException
  + FullyQualifiedErrorId :     PositionalParameterNotFound,Microsoft.PowerShell.Commands.NewItemCommand

您能帮我弄清楚我在做什么错吗?

最佳

1 个答案:

答案 0 :(得分:3)

如果要基于管道中的每个输入对象动态计算参数值,则需要使用delay-bind script block{ ... }),其中automatic $_ variable是指输入对象:

Get-ChildItem C:\Scripts\MetadataExport | New-Item -Type Directory -Force -Name {
  $_.Name.Split('-')[2] + '_XIPs' + "_$((Get-Date).ToString('yyyy-MM-dd'))" 
} -WhatIf

注意:上方命令中的-WhatIf common parameter会预览该操作。确定操作将执行您想要的操作后,请删除-WhatIf