web-dev-qa-db-ja.com

複数のディレクトリ:「mkdirdir {1..9}」に相当するPowershell?

'nixコマンドmkdir ch{1..9}と同等のPowerShellmd(またはmkdir、New-Item ...)を使用して複数のディレクトリを作成するための構文は何ですか。

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

例としてmanページとget-helpを調べましたが、PowerShellがそのような単純なことを行うための構文がわかりません。ありがとうございました。

11
Mr. Kennedy

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
_
16
DavidPostill

New-Itemはパスの配列を取ることができるため、mkdirを複数回呼び出す必要はありません。例えば:

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

@DavidPostillは、 彼の答え でほとんどの概念を説明しています。これは、明示的な連結を実行する代わりに、 文字列補間 も利用します。さらに、%の代わりにForEach-Objectの省略形が使用されますが、同じ意味です。

残念ながら、bashのように、文字列を文字列の配列に補間する簡単な方法はないようです。

22
Bob

覚えやすく、多くの状況に適用できるので、forループバージョンを使用します。それでも複数のコマンドに使用できます。

このbashコマンドに相当するもの:

for i in {1..9};行う
mkdir ch $ i
完了

... PowerShellの使用:

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

現在のディレクトリの下に複数のディレクトリを作成します。

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

上記は、以下の短縮版です。文字列の配列の前に含まれるアットマークと名前付きパラメータの使用に注意してください。

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

そして、最後までやりたい場合、完全なネイティブコマンドは次のようになります。

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

PowerShellコマンドラインを使用するときは、短いバージョンを使用します。

スクリプトを作成するとき、特に他の人(PowerShellを初めて使用する人)向けのスクリプトを作成するときは、完全なネイティブコマンドを作成する傾向があります。

自分に最適なものを選択してください。

1
fpm