1

CSV ファイルを使用してフォルダーをバッチ作成する小さなスクリプトを作成しました。しかし、別の方法でフォルダを作成している人を見ました。

CSV:

folder
4.1.1 Process
4.1.2 Score card
4.1.3 Strategy
4.1.4 Governance
4.1.5 Master plan  Calendar
4.1.6 Budget follow up
4.1.7 Budget documentation
4.1.8 Benchmarkvision
4.1.9 Std Documentation
4.1.10 Layout
4.1.11 Project
4.1.12 Training
4.1.13 Team structure
4.1.14 Work shop
4.1.15 Tools
4.1.16 Problem solving
4.1.17 Presentation
4.1.18 Working data zone
4.1.19 meeting
4.1.20 S
4.1.21 Miscellenous

脚本:

#change the $folderlist path as it's a hard link.
$folderlist = Import-Csv "C:\folders.csv"
$rootpath = read-host "Enter the path of the root folder where the csv files will be created"

foreach ($folder in $folderlist){
    $path = $rootpath+$folder.folder
    new-item -type directory -path $path
    } 

非常に単純ですが、人々が私が$(_$.folder)理解できない のようなものを使用しているのを見ました。$_andを使用して別の方法を教えてくれる人はい%{ }ますか?

私の質問が明確でない場合は、より多くの情報を提供してください。

ジョン

4

1 に答える 1

6

私が変更すると思う唯一のこと (入力 CSV が適切にフォーマットされていると仮定して) は、パスの作成方法です。

foreach ($folder in $folderlist){
    $path = join-path -path $rootpath -childpath $folder.folder;
    new-item -type directory -path $path;
    } 

代わりの:

foreach ($folder in $folderlist){
    new-item -type directory -path $rootpath -name $folder.folder;
    }

代替 2 (上記から派生):

$folderlist|foreach-object {new-item -type directory -path $rootpath -name $_.folder;}

代替 3 (上記から派生):

$folderlist|foreach-object {new-item -type directory -path (join-path -path $rootpath -childpath $_.folder);}

%はエイリアスですforeach-object- 私は常にこのようなスクリプトや説明で展開されたエイリアスを使用して、すべてが明確であることを確認します。

編集:さらに簡潔で、CSV ファイルのサイズに応じて、メモリ使用量が改善されるもう 1 つの方法があります。

$rootpath = read-host "Enter the path of the root folder where the csv files will be created"
Import-Csv "C:\folders.csv"|foreach-object {new-item -type directory -path (join-path -path $rootpath -childpath $_.folder);}
于 2013-02-06T15:04:41.183 に答える