特定の場所を照会するために必要なバッチファイル

特定の場所を照会するために必要なバッチファイル

私はプログラマーではないので、どんな助けでもいただければ幸いです。

NAS の場所を照会し、上位レベルのディレクトリ (およびおそらく 2 番目下のレベル) の出力を生成するバッチ ファイルが必要です。ファイル構造は次のとおりです。

\\NAS-ip\home\user1
\\NAS-ip\home\user2
\\NAS-ip\home\user3
\\NAS-ip\home\user4
\\NAS-ip\home\user99

バッチ出力は次のようになります。

\\NAS-ip\home\user1,\\NAS-ip\home\user2,\\NAS-ip\home\user3,\\NAS-ip\home\user4 … etc.

答え1

パワーシェル:

人間が読める形式:

(@{Path = '\\NAS-ip\home' ; Levels = '2'} |
    ForEach-Object {
        Get-ChildItem -Path ($_.Path + ((@('\*') * $_.Levels) -join '')) |
            Where-Object {$_.PsIsContainer} | Select-Object -ExpandProperty FullName
    }) -join ','

一発ギャグ:

(@{Path = '\\NAS-ip\home' ; Levels = '2'} | ForEach-Object {Get-ChildItem -Path ($_.Path + ((@('\*') * $_.Levels) -join '')) | Where-Object {$_.PsIsContainer} | Select-Object -ExpandProperty FullName}) -join ','

コンパクト:

(@{Path = '\\NAS-ip\home' ; Levels = '2'} | % {gci ($_.Path + ((@('\*') * $_.Levels) -join '')) | ? {$_.PsIsContainer} | select -Exp FullName}) -join ','

必要に応じて とPathを変更してください。また、ファイル名にはコンマが許可されており、あいまいさが生じる可能性があるため、区切り文字を などに変更することをお勧めします。区切り文字を変更するには、 lastを に編集します。Levels,|-join ','-join '|'

ボーナス: 複数の初期パスのサブディレクトリのリストを取得するには、先頭のハッシュテーブルをコンマで区切ります。

(@{Path = '\\NAS-ip\home' ; Levels = '2'}, @{Path = '\\NAS2-ip\somedir' ; Levels = '3'} |
    ForEach-Object {
        Get-ChildItem -Path ($_.Path + ((@('\*') * $_.Levels) -join '')) |
            Where-Object {$_.PsIsContainer} | Select-Object -ExpandProperty FullName
    }) -join ','

関連情報