スポンサーリンク

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をコピーしました