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

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

操作画面

こんにちは、さち です。

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

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

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

スポンサーリンク

「Windows PowerShell」を起動する

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

PowerShell を起動してみます。

  1. 「Windows + 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個のコマンドレットを「|(パイプライン)」で結ぶことで
前のコマンドレットの実行結果を、次のコマンドレットに引き渡しています。
つまり、「Get-ChildItem(dir)」でファイル名一覧を取得し
それを「Out-File」が受け取ってテキストファイルに書き出しています。

【参考サイト】

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

コメント

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