Help us understand the problem. What is going on with this article?

PowerShellでファイル名をキーにフォルダ振り分け

ファイル転送されてくるzipファイルの解凍

まず最初に躓いたのがzipファイルの解凍の方法でした。
PowerShellのバージョンアップで標準機能として搭載されましたが、以前はunzip使ってました。
最近のバージョンだと下記のコマンドで解凍できました。

Unzip.ps1
[String]$FROM="解凍元zipファイルパス"
[String]$TO="解凍先フォルダパス"
Expand-Archive -Path $FROM -DestinationPath $TO -Force

ファイル名一覧からキー情報を抜き出す

解凍したcsvファイルの一覧からネーミングルールに沿った文字列をキーとして取得します。
取得したキーをソートすると同時にユニークなものに絞ります。

GetUniqueKey.ps1
$LIST = @(Get-ChildItem -include [0-9]*.csv -name $TO) -as [String[]]
foreach($FILE_NAME in $LIST){
    [String[]]$UNIQUE_KEY += $FILE_NAME.Substring(10,7)
}
$UNIQUE_KEY = $UNIQUE_KEY | Sort-Object | Get-Unique

キー情報を元にフォルダを作成しファイルを移動させる

上で作成したユニークなキー毎にフォルダを作成し、ファイル名にキーを含むファイルを移動させます。

MoveFile.ps1
foreach($FOLDER in $UNIQUE_KEY){
    [String]$MAKE_FOLDER=$TO + "\" + $FOLDER
    if(!(Test-Path $MAKE_FOLDER)){
        New-Item $MAKE_FOLDER -itemType Directory
    }
    [String]$CSV=$TO + "\*" + $FOLDER + "*.csv"
    Move-Item $CSV $MAKE_FOLDER -force
}
pureneo
中学時代に学校でPC98にフロッピー挿してBASICに触れる。家ではWin95をダイアルアップ回線に繋いでインターネットに触れる。そんなこんなでコンピュータに興味を持ち大学に進学。1社目でホストCOBOLをサーバCOBOLへ移植するプロジェクトに配属され大炎上の後に病む。今は半情シスみたいな立場でExcelVBAとかSASをメインに触ってます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away