LoginSignup
0
1

More than 3 years have passed since last update.

【機械学習】データリストを生成するWindowsコマンド【備忘】

Last updated at Posted at 2019-09-29

はじめに

Yoloのデータリストを作成しようとしたとき、
そういえばWindowsのfindコマンドってなんだろうと思い調べました。

dirコマンド

一番覚えやすそうなコマンド。
拡張性はないが簡単に使うだけなら十分。

> dir /s /b data\img\*.jpg

C:\Users\User\Documents\data\img\cat_1.jpg
C:\Users\User\Documents\data\img\cat_2.jpg
C:\Users\User\Documents\data\img\cat_3.jpg
.....

whereコマンド

検索パターンに一致するファイルの場所を表示するコマンド
明示的にディレクトリを指定しないとPATH(環境変数)直下も検索検索対象になる上、
明示的にディレクトリを指定する場合、再帰的に検索が走る。
使いにくい。

> where /r .\data *.jpg

C:\Users\User\Documents\data\img\cat_1.jpg
C:\Users\User\Documents\data\img\cat_2.jpg
C:\Users\User\Documents\data\img\cat_3.jpg
.....

forfilesコマンド

条件に当てはまるファイルを指定ディレクトリから探し、処理を行うコマンド
ドキュメント

オプションも多く拡張性が高い。
覚えにくいが使いこなせれば色々できそう。
パスをそのまま出力しようとするとダブルクォーテーションが付いてしまう。

> forfiles /p .\data\img /s /m *jpg /c "cmd /c echo @path"

"C:\Users\User\Documents\data\img\cat_1.jpg"
"C:\Users\User\Documents\data\img\cat_2.jpg"
"C:\Users\User\Documents\data\img\cat_3.jpg"
.....

相対パスで欲しい

forfilesコマンドで、パス名ではなくファイル名のみを取得、
それを出力部分でくっつけたいパスと結合、力業。。

> for /f %i in ('forfiles /p .\data\img /s /m *jpg /c "cmd /c echo @file"') do @echo data\img\%~i

data\img\cat_1.jpg
data\img\cat_2.jpg
data\img\cat_3.jpg
.....

ファイルに起こす場合は

追記を使う。
forで回しているので、ただ標準出力をリダイレクトすると最後の一行しか残らない。

> for /f %i in ('forfiles /p .\data\img /s /m *jpg /c "cmd /c echo @file"') do @echo data\img\%~i >> train.txt
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1