11

Каков синтаксис для создания нескольких каталогов с помощью PowerShells md (или mkdir, New-Item ...), эквивалентного команде 'nix mkdir ch{1..9} т.е.

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

Я посмотрел на страницах руководства и получил помощь для примеров, но я не знаю синтаксис для PowerShell, чтобы сделать такую простую вещь. Спасибо.

3 ответа3

22

Вам не нужно вызывать mkdir несколько раз, потому что New-Item может принимать массив путей. Например:

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

@DavidPostill объяснил большинство понятий в своем ответе. Это также использует преимущества интерполяции строк вместо выполнения явной конкатенации. Кроме того, вместо % используется сокращение ForEach-Object , но оно имеет то же значение.

К сожалению, не представляется простым способом интерполировать строку в массив строк, как в bash.

16

Какой синтаксис для создания нескольких каталогов с PowerShell

Используйте следующую команду:

0..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
1

Я бы использовал для петлевой версии, так как она легко запоминается и может применяться во многих ситуациях. Даже это может быть использовано для нескольких команд.

Для эквивалента этой команды bash:

для меня в {1..9}; делать
MKDIR CH $ I
сделанный

... в использовании PowerShell:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .