Multiple directories: Powershell equivalent of "mkdir dir{1..9}"?
What is the syntax to create multiple directories with PowerShell
Use the following command:
0..9 | foreach $_{ New-Item -ItemType directory -Name $("ch" + $_) }
How it works:
-
0..9
the range operator..
generates the sequence of numbers 0, 1, ... 9 - the numbers are pipelined
|
to the next command -
foreach
loops (through each number in turn) -
{ ... }
is a script block -
New-Item -ItemType directory -Name $("ch" + $_)
creates the directories -
$_
is an automatic variable that represents the current object in the pipeline (the number)
Example:
> 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
You don't need to invoke mkdir multiple times, because New-Item
can take an array of paths. For example:
mkdir $(1..9 | %{"ch$_"})
@DavidPostill has explained most of the concepts in his answer. This also takes advantage of string interpolation instead of performing an explicit concatenation. Additionally, the %
shorthand is used instead of ForEach-Object
, but has the same meaning.
Unfortunately, there does not appear to be an easy way to interpolate a string into an array of strings as in bash.