Несколько каталогов: эквивалент 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
оператор дальности..
генерирует последовательность чисел 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
Вам не нужно вызывать 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}