Несколько каталогов: эквивалент PowerShell для "mkdir dir{1..9}"?

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

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

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

4 ответа

Решение

Какой синтаксис для создания нескольких каталогов с 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

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

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

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

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

Создайте несколько каталогов под текущим каталогом:

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

Вышеупомянутое является сокращенной версией следующего. Обратите внимание на знак at перед массивом строк и использование именованных параметров:

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

И если вы хотите пойти до конца, полная встроенная команда будет такой:

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

При использовании командной строки PowerShell я использую короткую версию.

При написании сценария, особенно для других (которые могут быть новичками в PowerShell), я обычно пишу полную встроенную команду.

Выбирайте то, что лучше всего подходит для вас.

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

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

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

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

for($i=1;
$i -le 10;
$i++)
{md ch$i}
Другие вопросы по тегам