CMDコマンドを利用したフォルダファイルリストを抽出する方法(feat.PowerShell)

時々、特定のフォルダ内のファイルリストの抽出が必要な時がありますよね? 時間がかかるので、これをいちいち手作業で行うことはできませんよね? この記事では、CMDコマンドとパワーシェルを使ってこのような作業を簡単に行う方法を紹介します。

この方法を使うと、いくつかの簡単なコマンドだけで目的の結果を得ることができます。まず、私が欲しいフォルダ内の全てのファイルのファイル名をCSVファイルに抽出する方法を説明します。 そして、抽出後、少し修正する事項(例:10桁だけ抽出)を反映する過程を紹介します。

このガイドを通じて、ファイル管理をより効率的かつ効果的に行うことができるでしょう。 さあ、始めましょう。

CMDウィンドウを開く方法

まず、CMD(コマンドプロンプト)ウィンドウを開きます。 以下の手順に従ってください。

スタートメニューからCMDを実行する

  • ショートカットの使用: Windowsキー+ Rを押して実行ウィンドウを開きます。実行ウィンドウに cmdを入力して 入力を押します。
  • スタートメニューの使用: 画面左下のスタートボタンをクリックして、検索バーに cmd または コマンドプロンプトと入力します。検索結果からコマンドプロンプトをクリックして実行します。

管理者権限でCMDを実行する

  • ショートカットの使用: Windowsキー+ Xを押した後、メニューから コマンドプロンプト(管理者)を選択します。
  • スタートメニューの使用: 検索窓に cmdを入力した後、検索結果で コマンドプロンプトを右クリックして 管理者権限で実行を選択します。 私はこのオプションをお勧めします。

フォルダ内のすべてのファイルリストをCSVに変換する方法

CMDとパワーシェルを使ってフォルダ内のすべてのファイルリストをCSVファイルに変換する方法を段階的に説明します。

1.CMDコマンドを使用してファイルリストをテキストファイルに保存する

まず、CMDウィンドウを開いて下記のコマンドを入力(コピペ)し、指定したフォルダ(C:\test)内の全てのファイル名をテキストファイル(file_list.txt)に保存します。ご希望のフォルダのアドレスをC:\testの代わりに使用してください。

dir /b "C:\test" > file_list.txt

2.テキストファイルをCSVファイルに変換する

次に、PowerShellを使用してテキストファイルを読み込み、CSVファイルに変換します。

powershell -コマンド "Get-Content file_list.txt | Out-File file_list.csv -Encoding ascii"

3.一時的なテキストファイルを削除する

一時的に生成されたテキストファイル(file_list.txt)を削除して作業を完了します。

del file_list.txt

コマンド全体を一度に実行する

進行する手順を理解するために段階的に説明しましたが、上記の全ての手順を一度に実行することもできます。下記のコマンドをCMDウィンドウにコピペして貼り付けた後 入力 キーを押して実行します。

cd "C:\test"
dir /b > file_list.txt
powershell -Command "Get-Content file_list.txt | Out-File file_list.csv -Encoding ascii"
del file_list.txt

こうすれば file_list.csv ファイルには、フォルダ内のすべてのファイル名が以下のように保存されます。

0292021001R00.pdf
2192014006R01.pdf
2372019002R00.pdf
2442015001R01.pdf

file_list.csv ファイルの内容

ところが、実際のcsvファイルを作って内容を確認してみると、ファイル名と拡張子まで全部反映されたことが確認されます。 その状態で使うのではなく、ファイル名だけ使いたいし、もしかしたら、その中でも数桁だけ使いたい場合は、次のようにします。ここでは最初の10桁だけ抽出してみます。

ファイル名から最初の10桁だけを抽出してCSVで保存する方法

まず、以前と同じようにCMDコマンドを使ってフォルダファイルのリストを抽出し、テキストファイルとして保存します。

dir /b "C:\test" > file_list.txt

パワーシェルを使用して、各ファイル名から最初の10桁だけを抽出してCSVファイルとして保存します。下記のコマンドで10の代わりに他の数字を入れると、希望する桁数に合わせて抽出可能です。

powershell -コマンド "Get-Content file_list.txt | ForEach-Object { $_.Substring(0,10) } | Out-File file_list.csv -Encoding ascii"

そして、既存に作成したテキストファイルは削除してくれます。

del file_list.txt

上記の全てのステップを一度に実行できるようにCMDコマンドを作成しました。下記のコマンドをCMDウィンドウにコピペして貼り付けた後 入力 キーを押して実行します。

cd "C:\test"
dir /b > file_list.txt
powershell -Command "Get-Content file_list.txt | ForEach-Object { $_.Substring(0,10) } | Out-File file_list.csv -Encoding ascii"
del file_list.txt

この過程で file_list.csv ファイルには、各ファイル名の最初の10桁だけが保存されます。

0292021001
2192014006
2372019002
2442015001

file_list.csv ファイルの内容

整理する

今回の記事では、CMDコマンドをコピペするだけで、欲しいフォルダのファイル名全体をリスト化する方法を説明しました。

コマンドの構成内容が重要というよりも、このコマンドを知っていてリストを作成できることが重要ですよね。 そういう意味では、皆さんはもう一つのスキルを習得したことになります。

次回は別のスキルを紹介したいと思います。
ありがとうございます。

#参考事項

CMDコマンドの詳細な説明は下記の通りです。 もしかしたら、もっと深く知りたい方は参考にしてください。

フォルダ内のすべてのファイルリストをCSVに変換する

```cmd
cd "C:\test"
dir /b > file_list.txt
powershell -Command "Get-Content file_list.txt | Out-File file_list.csv -Encode ascii"
del file_list.txt


これらのコマンドは次の順番で実行されます:

1.`cd "C:\test"`:
   - "C:\test" ディレクトリに移動します。
   - cd` コマンドは 'Change Directory' の略で、指定されたパスに移動するために使用されます。

2. `dir /b > file_list.txt`:
   - 現在のディレクトリ(C:\test)内のファイルリストを取得し、`file_list.txt`ファイルとして保存します。
   - dir` コマンドは、ディレクトリ内のファイルとフォルダのリストを一覧表示します。
   - b` オプションはファイル名だけを出力します。
   - `>` は出力結果をファイルとして保存します。

3.`powershell -Command "Get-Content file_list.txt | Out-File file_list.csv -Encoding ascii"`:
   - `file_list.txt` ファイルの内容を読み込んで `file_list.csv` ファイルに保存します。
   - powershell -Command` はパワーシェルコマンドを実行します。
   - `Get-Content file_list.txt` は `file_list.txt` ファイルの内容を取得します。
   - `|` (パイプ) は前のコマンドの出力結果を後のコマンドに渡します。
   - `Out-File file_list.csv -Encoding ascii` は内容を `file_list.csv` ファイルに保存し、エンコーディング形式を ASCII で指定します。

4. `del file_list.txt`:
   - 一時的に作成された `file_list.txt` ファイルを削除します。
   - del` コマンドは指定されたファイルを削除します。

これらのコマンドは一度に実行され、 `C:\test` ディレクトリ内のすべてのファイル名を `file_list.csv` ファイルとして保存し、一時ファイルを削除します。


ファイル名から最初の10桁だけを抽出してCSVで保存する

```cmd
cd "C:\test"
dir /b > file_list.txt
powershell -Command "Get-Content file_list.txt | ForEach-Object { $_.Substring(0,10) } | Out-File file_list.csv -Encoding ascii"
del file_list.txt
``` ```` の

これらのコマンドは次の順序で実行されます:

1.`cd "C:\test"`:
   - "C:\test" ディレクトリに移動します。

2. `dir /b > file_list.txt`:
   - 現在のディレクトリ(C:\test)内のファイルリストを取得して `file_list.txt` ファイルとして保存します。

3.`powershell -Command "Get-Content file_list.txt | ForEach-Object { $_.Substring(0,10) } | Out-File file_list.csv -Encoding ascii"`:
   - `file_list.txt`ファイルの内容を読み込み、各ファイル名から最初の10桁だけを抽出し、`file_list.csv`ファイルとして保存します。
   - powershell -Command` はパワーシェルコマンドを実行します。
   - `Get-Content file_list.txt` は `file_list.txt` ファイルの内容を取得します。
   - `|` (パイプ) は前のコマンドの出力結果を後のコマンドに渡します。
   - `ForEach-Object { $_.Substring(0,10) }` は各ファイル名から最初の10桁を抽出します。
     - ForEach-Object` は、各項目に対して指定されたタスクを実行するパワーシェルコマンドです。
     - `{ $_.Substring(0,10) }` は、ファイル名の最初の10文字を抽出するスクリプトブロックです。
     - $_` は現在処理中の項目を表すパワーシェル自動変数です。
     - Substring(0,10)` は文字列の最初の10文字を抽出するメソッドです。
   - `Out-File file_list.csv -Encoding ascii` は結果を `file_list.csv` ファイルに保存し、エンコーディング形式を ASCII で指定します。

4. `del file_list.txt`:
   - 一時的に生成された `file_list.txt` ファイルを削除します。

これらのコマンドは一度に実行され、 `C:\test` ディレクトリのすべてのファイル名から最初の10桁を抽出して `file_list.csv` ファイルに保存し、一時ファイルを削除します。

類似の投稿