gpt4 book ai didi

powershell - 使用 Powershell 创建多个文件夹

转载 作者:行者123 更新时间:2023-12-02 09:19:18 25 4
gpt4 key购买 nike

我需要在位置:c\temp\test 创建 3 个名为 AAA、BBB、CCC 的文件夹

我尝试了以下代码:

$local = "C:\Temp\Test"
$Users = $local+"\AAA\",$local+"\BBB\",$local+"\CCC\"
New-Item -Item Type directory $Users

它给了我错误New-Item:找不到接受参数的位置参数

我也尝试过

$local = "C:\Temp\Test"
$Users = $local+"\AAA\",$local+"\BBB\",$local+"\CCC\"
md $Users

我在这里缺少什么?

最佳答案

BenH's helpful answer提供了有效的解决方案。

为什么你的命令不起作用:

您的问题是运算符优先级之一:

$local+"\AAA\",$local+"\BBB\",$local+ "\CCC\"

被解释为:

$local + ("\AAA\",$local) + ("\BBB\",$local) +"\CCC\"

产生单个字符串而不是所需的数组,因为LHS - $local是一个字符串

也许令人惊讶的是,,数组构造运算符的优先级高于 + - 参见 Get-Help about_Operator_Precedence .


因此,使用 (...)优先级将使您的命令起作用:

$Users = ($local+"\AAA\"), ($local+"\BBB\"), ($local+"\CCC\")

使用可扩展(插值)字符串(在 "..." 内),如 BenH 的回答所示,更简洁,但仍然:

  • 需要定义辅助变量 $local首先

  • 需要引用 $local每个可扩展(插值)字符串( "..." )


A DRY替代方案是( %ForEach-Object 的别名):

$Users = 'AAA', 'BBB', 'CCC' | % { "C:\Temp\$_\" }

请注意,使用管道来实现此目的有点,但这在大多数情况下并不重要。


使用foreach语句有点冗长,但性能更好:

$Users = foreach($name in 'AAA', 'BBB', 'CCC') { "C:\Temp\$name\" }

关于powershell - 使用 Powershell 创建多个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44079261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com