3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【PowerShell】再帰的にファイルを検索し!それらを一箇所にコピーして!一気にファイル名を変える!

Last updated at Posted at 2019-03-05

利用シーン

  • 複数のディレクトリに散らばっているファイルを一箇所にまとめたい
  • まとめてファイル名を変更したい(変更したいファイル名が決まっている)

自分が試した環境

  • Windows10
  • PowerShell 5.1

書いたコード

記事最下部の「コード」から、一部を抜粋

▼再帰的に取得した情報が、ファイルかディレクトリかを判定する

testpath.ps1
$files = Get-ChildItem -Recurse -Name

# 取得した情報を一つ一つ処理する
foreach($file in $files) {
    if( Test-Path $file -PathType Leaf ) {
        Write-Host($file + 'はファイルです。')
    }
}

Test-Path - Microsoft Docs

▼ファイル名に「txt」という文字があるかどうかを判定(拡張子判定のつもり)

splitpath.ps1
# ファイル名だけを抽出する('.\dir\file.txt'みたいなときに'file.txt'を抽出する)
$tailFileName = Split-Path $file -Leaf
if( $tailFileName.Contains('txt') ) {
    Write-Host($tailFileName + 'にはtxtという文字が含まれています')
}

Split-Path - Microsoft Docs

▼外部ファイルを一行ずつ読み込む

get-content.ps1
Get-Content '.\nameList.txt' -as[string[]]

コード

meetupAndChangeFIlesAll.ps1
# いろんなところに散らばるファイルを一つのディレクトリに集める
$files = Get-ChildItem -Recurse -Name

foreach($file in $files) {
    if( Test-Path $file -PathType Leaf ) {
        $tailFileName = Split-Path $file -Leaf
        if( $tailFileName.Contains('txt') ) {
            Copy-Item $file '.\target_dir'
        }
    }
}

# 外部ファイルから読み取った文字列(一行に一単語)を使って指定ディレクトリ内のファイル名を変更
$nameList = (Get-Content '.\in.txt') -as[string[]]
$targetDir = Get-ChildItem '.\target_dir'
$concatDir = '.\target_dir\'

$i = 0

foreach($f in $targetDir) {
    Write-Host ('新しいファイル名は ' + $nameList[$i])
    Write-Host ('現在のファイル名は ' + ${concatDir} + ${f})

    Rename-Item ${concatDir}${f} -NewName $nameList[$i]
    $i++
}

Get-ChildItem '.\target_dir'

3
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?