多个目录:Powershell 等效于“mkdir dir{1..9}”?

多个目录:Powershell 等效于“mkdir dir{1..9}”?

使用 PowerShell md(或 mkdir、New-Item...)创建多个目录的语法相当于'nix 命令,mkdir ch{1..9}

~/parent_dir/  
ch1/  
ch2/  
ch3/  
ch4/  
ch5/  
ch6/  
ch7/  
ch8/  
ch9/  

我查看了手册页和 get-help 中的示例,但我不知道 PowerShell 的语法如何执行如此简单的事情。谢谢。

答案1

使用 PowerShell 创建多个目录的语法是什么

使用以下命令:

0..9 | foreach $_{ New-Item -ItemType directory -Name $("ch" + $_) }

怎么运行的:

  • 0..9范围运算符 ..生成数字序列 0、1、... 9
  • 数字是流水线 |到下一个命令
  • foreach 循环(依次通过每个数字)
  • { ... }脚本块
  • New-Item -ItemType directory -Name $("ch" + $_) 创建目录
  • $_是一个自动变量代表管道中的当前对象(编号)

例子:

> 0..9 | foreach $_{ New-Item -ItemType directory -Name $("ch" + $_) }


    Directory: F:\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       25/09/2016     14:57                ch0
d-----       25/09/2016     14:57                ch1
d-----       25/09/2016     14:57                ch2
d-----       25/09/2016     14:57                ch3
d-----       25/09/2016     14:57                ch4
d-----       25/09/2016     14:57                ch5
d-----       25/09/2016     14:57                ch6
d-----       25/09/2016     14:57                ch7
d-----       25/09/2016     14:57                ch8
d-----       25/09/2016     14:57                ch9

答案2

您不需要多次调用 mkdir,因为它New-Item可以接受路径数组。例如:

mkdir $(1..9 | %{"ch$_"})

@DavidPostill 已经解释了大部分概念他的回答。这也利用了字符串插值而不是执行显式连接。此外,%使用简写代替ForEach-Object,但含义相同。

不幸的是,似乎没有像在 bash 中那样简单的方法将字符串插入到字符串数组中。

答案3

在当前目录下创建多个目录:

mkdir ('abc','def','jkl') 

以上是以下内容的简写版本。请注意字符串数组前面的 at 符号以及命名参数的使用:

mkdir -Path @('abc','def','jkl')

如果你想一路走下去,完整的本机命令将是:

New-Item -Path @('abc','def','jkl') -ItemType Directory

使用 PowerShell 命令行时,我使用简短版本。

在编写脚本时,尤其是为其他人(可能不熟悉 PowerShell)编写脚本时,我倾向于编写完整的本机命令。

选择最适合您的方法。

答案4

我会使用 for 循环版本,因为它容易记住并且可以应用于许多情况。它甚至可以用于多个命令。

与此 bash 命令等效的命令是:

对于我在 {1..9} 中;执行
mkdir ch$i
完成

...在 PowerShell 中使用:

for($i=1;
$i -le 10;
$i++)
{md ch$i}

相关内容