Windows:ファイル,フォルダーの名前を一覧で書き出す

この記事は約4分で読めます。
記事内に広告が含まれています

操作画面

こんにちは、さち です。

先日、とあるフォルダーにあるすべてのファイル名前を、テキストファイル書き出したいことがありました。ファイル数は50個くらいです。

ファイルをすべてコピーしてテキストファイルにペーストしたら、ファイル名が書き出せるかな?……と思ったのですが、そんなに甘くありませんでした。

1個ずつコピペしていっても何とかなる数ですが、時間がかかりそうな単純作業だし気が進みません。

ということで、PC にやってもらいます。

スポンサーリンク

「Windows PowerShell」を起動する

「Windows PowerShell」は、簡単にいうと、文字で Windows に指示を出せる機能。Windows7 以降に標準搭載されていています。(「コマンドプロンプト」の後継のようなもの)

PowerShell を起動してみます。

  1. + X キーを押してクイックリンクを開き、「Windows PowerShell」をクリック(「スタート」ボタン→「Windows PowerShell」でも起動可能)。(PowerShell の操作でユーザー権限に問題がある場合は「管理者」付きの方を使用)
    PowerShell 操作画面
  2. PowerShell の画面が表示されます。(行頭の表示は環境によって異なります)
    PowerShell 操作画面

 

ファイル名の一覧を書き出す

PowerShell で「コマンドレット」という指示を使うことで、PC に仕事をさせることができます。

  1. 例として、こちらのフォルダー(D:\sample)を使ってみます。
    操作画面
  2. Dドライブ直下に「list.txt」というファイルに書き出す場合、PowerShell に次のように記述して、Enter キーを押します。
    dir "D:\sample" -name | Out-File "D:\list.txt"

     

  3. 指定した場所(D:\list.txt)にテキストファイルができています。
    操作画面
  4. テキストファイルの中身はこのとおり。ファイル,フォルダーの名前の一覧が書き出されています。
    操作画面

「ファイル」または「フォルダー」だけを書き出したい場合は、PowerShell の記述を次のようにすることで可能です。

#ファイルだけを書き出す
dir "D:\sample" -name -include *.* | Out-File "D:\list.txt"

#フォルダーだけを書き出す
dir "D:\sample" -name -exclude *.* | Out-File "D:\list.txt"

ただし、簡易的な方法なので、拡張子がないファイル,名前の中に .(ドット) を含むフォルダー等は意図した通りの動きをしてくれません。(厳密に区別したい場合は PowerShell を詳しく勉強して下さい)

使用したコマンドレットの簡単な解説

ファイル名さえ書き出せればそれで良いという人は、この項は読まなくていいです。

「Get-ChildItem」コマンドレット

Get-ChildItem は、ディレクトリ(フォルダー)の情報を取得するコマンドレット。エイリアス(省略,別表記)を使って dir ls gci と記述することも可能。

次のようなルールで記述されます。

Get-ChildItem (フォルダーの)場所 オプション
#「場所」「オプション」は省略可能
#「場所」を省略した場合、現在(行頭に表示)のフォルダーが使用される

#エイリアスを使った場合
dir 場所 オプション
ls 場所 オプション
gci 場所 オプション
#ファイルの名前だけを取得
-name

#特定の「文字列」を含む/含まないファイルだけを取得
-include 文字列
-exclude 文字列
#「文字列」にはワイルドカード「*」を使用可能

#(サブ)フォルダーの中身も取得
-recurse
#「D:\sample」にあるファイルで名前に拡張子(xxx.xxx)を含むものを取得
Get-ChildItem "D:\sample" -name -include *.*

「Out-File」コマンドレット

Out-File は、データをテキストファイルに保存するコマンドレット。次のようなルールで記述されます。

Out-File (書き出すファイルの)場所 オプション
#「オプション」は省略可能
#上書きでなく追記をする
-append

#文字コードを指定する
-encoding 文字コード
#文字コードは「Unicode」「UTF8」「ASCII」などが使用可能
#「D:\sample」のファイル名一覧を「D:\list.txt」に追記する
dir "D:\sample" -name | Out-File "D:\list.txt" -append

これら2個のコマンドレットを |(パイプライン) で結ぶことで、前のコマンドレットの実行結果を、次のコマンドレットに引き渡しています。

つまり、dir でファイル名一覧を取得し、それを Out-File が受け取ってテキストファイルに書き出しています。

参考サイト

→ PowerShell Cmdlet - Get-ChildItem - ubweb.info
→ PowerShell Cmdlet - Out-File - ubweb.info
→ 互換性のあるエイリアス - Microsoft

コメント

タイトルとURLをコピーしました