16

特定のディレクトリ内のすべてのフォルダーの名前を取得し、それぞれを配列のエントリとして返すスクリプトを作成しようとしています。ここから、各配列要素を使用して、後の関数呼び出しのパラメーターとして各要素を使用するより大きなループを実行します。これはすべて、powershell を介して行われます。

現時点では、次のコードがあります。

function Get-Directorys
{
    $path = gci \\QNAP\wpbackup\

    foreach ($item.name in $path)
    {
        $a = $item.name
    }
}   

行は正しく、$pathすべてのディレクトリを取得しますが、foreach ループは、各要素の各ディレクトリの完全な名前ではなく、最初のディレクトリの個々の文字を実際に格納する問題です。

4

5 に答える 5

39

パイプラインを使用する別のオプションは次のとおりです。

$arr = Get-ChildItem \\QNAP\wpbackup | 
       Where-Object {$_.PSIsContainer} | 
       Foreach-Object {$_.Name}
于 2012-12-22T08:59:28.040 に答える
8

$array = (dir *.txt).FullName

$array は、ディレクトリ内のすべてのテキスト ファイルのパスのリストになりました。

于 2013-05-31T22:53:11.227 に答える
6

完全性と読みやすさのために:

これにより、「F」で始まる「somefolder」内のすべてのファイルが配列に取得されます。

$FileNames = Get-ChildItem -Path '.\somefolder\' -Name 'F*' -File

これは、現在のディレクトリのすべてのディレクトリを取得します。

$FileNames = Get-ChildItem -Path '.\' -Directory
于 2014-09-05T11:03:38.443 に答える
2

問題は、foreachループ変数が$item.name. 必要なのは、という名前のループ変数で、それぞれのプロパティに$itemアクセスします。name

すなわち、

foreach ($item in $path)
{
    $item.name
}

また、私が$item.name割り当てられていないことにも注意してください。Powershell では、結果が変数に格納されていない場合、別のコマンドにパイプされていない場合、または別の方法でキャプチャされていない場合、関数の戻り値に含まれます。

于 2012-12-22T00:07:53.277 に答える