この記事では、一括でファイルを整理する方法を紹介します。
まず、結論を記載します。
一括でリスト作成
- バッチファイルを使用する場合、「echo」コマンドを使用
- ps1ファイルを使用する場合、「Out-File」と「Get-ChildItem」コマンドを使用
下記、詳細を説明します。
手動でファイルリスト作成
多少手間がかかり、ミスが起きる可能性もありますが、
一番簡単な方法が手動でリストを作成することです。
しかしファイル数が増えると、時間が掛かるだけでなく、ミスが起きる可能性がかなり高くなります。
そのため、次に紹介する、バッチファイルやps1ファイルを使用する方法をお勧めいたします。
バッチファイルを使ってリスト作成
最初にファイルを作る手間がかかりますが、
バッチファイルを作成すれば簡単&確実にファイル移動が出来ます。
@echo off
setlocal enabledelayedexpansion
rem フォルダのパスを取得
set "targetDirectory=%cd%"
rem 対象ファイルの拡張子を入力
set /p "fileExtension=対象ファイルの拡張子を入力後、エンターキーを入力してください(例: xlsx,docx,txt,csv ...): "
set "OutputFile=filelist.csv"
echo "ファイル名","ファイルサイズ (バイト)" > %OutputFile%
for %%f in (*%fileExtension%) do (
set "FileName=%%~nxf"
set "FileSize=%%~zf"
echo "!FileName!","!FileSize!" >> %OutputFile%
)
echo ファイルリストが %OutputFile% に書き出されました。
endlocal
pause
使用方法はこちらの記事をご覧ください。
このコードはファイル名とファイルサイズのリストを作成しますが、
作成時間をまとめるバージョンも紹介しております。是非ご一読ください
一度作ってしまえば使いまわせるので、非常におすすめです。
ps1ファイルを使ってファイル移動
バッチファイル同様、ps1ファイルを使用してもファイル移動が出来ます。
# スクリプトの開始
# フォルダパスの指定(必要に応じて変更)
$folderPath = Get-Location
# 出力ファイルのパス(必要に応じて変更)
$outputFile = Join-Path -Path $folderPath -ChildPath "\filelist.csv"
# フィルタリングする拡張子(必要に応じて変更、複数指定可)
$extensions = Read-Host "対象ファイルの拡張子を入力後、エンターキーを入力してください(例: xlsx,docx,txt,csv ...)"
# フォルダ内のファイル一覧を取得
$fileList = Get-ChildItem -Path $folderPath -Filter *$extensions
# ファイル一覧を出力ファイルに書き込む
$fileList | ForEach-Object { $_.Name} | Out-File -FilePath $outputFile -Encoding UTF8
# 完了メッセージ
Write-Host "ファイルリストが $OutputFile に書き出されました。"
# ユーザーの操作を待つ
Read-Host "続行するにはEnterキーを押してください。"
使用方法はこちらの記事をご覧ください。
その他の作業を効率化したい方へ
今回はファイル移動の効率化について紹介しましたが、
これ以外にも簡単に効率化出来てしまう作業がたくさんあります。
以上、最後まで読んでいただきありがとうございました。
メーカー勤務のサラリーマン。
生成AIを駆使してプログラムを作り、
日々の業務の効率化を図る。