0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Batファイル 特定のフォルダの特定の拡張子で最新のファイルを一つだけテキストファイルに出力

Posted at

不完全

本当は10くらい表示するようにしたいが、全くうまくいかない。
10くらい表示するために、tokensは1-10になっている。
bat_ShowNewOne.batをリストを作成したフォルダに直に置く。batファイル自体の文字コードはANSI。
なお、環境依存文字でも大丈夫なようにUTF-8で出力される。
変数は1文字になる。%FILES% %FILES %%FILESはエラー。
Dirを囲んでいるのはバッククォートだが、そのためには事前にbackqが入っていないとダメ。クォーテーションではない。

最新とは更新日付ベースになります。

ファイル名には空白が含まれているので、こんなややこしいことになっている可能性があります

bat_ShowNewOne.bat
@Echo Off
Chcp 65001
Cls
cd %~dp0
FOR /F "usebackq tokens=1-10 delims==" %%i IN (`Dir *.pdf /b /OD`) DO @echo %%i > ThisFolderPdfFileslist.txt
Chcp 932
@Echo On

コマンドラインでも実験できる

この時は変数の前の%%%
CLSが入っているので、いらない人は削除してください。

Cls && FOR /F "usebackq tokens=1 delims==" %i IN (`Dir *.pdf /b /Od`) DO @echo %i > ThisFolderPDFFileslist.txt

しかし、以下のように画面に表示させる場合は、いったんすべてのPDFファイルが表示され、最後に1つ表示され、画面では効果が分かりにくい。

FOR /F "usebackq tokens=1 delims==" %i IN (`Dir *.pdf /b /Od`) DO @echo %i

BingのchatGPT

正しいコマンドは以下のようになります。といって出てきたのがこれ。

for /f “Tokens=1-10%%I IN (‘dir *.txt /b /o-d) do Echo %%I %%J %%K %%L %%M %%N %%O %%P %%Q %%R

はい間違い@Echoじゃないとうまくいかない。

txtファイルは無理

なぜなら、最新のファイルが、ファイルリストになるため。
Textファイルのときは最新ではなく、最新の次から10にしなければいけない。
しかし、今のところ、最新1つしか出ないので、リストしか出力されない。
逆に出力ファイル名をタイトルっぽくして、11にしてもいいかもしれない。
という妄想はまず10出てきてからだ。AIはほんと使えないな。

10は出ない

FOR /F "usebackq tokens=1-10 delims==" %%I IN (Dir *.pdf /b /OD) DO @echo "%%I %%J %%K %%L %%M %%N %%O %%P %%Q %%R"
こういうのも試したが、うまくいかない。

FOR /F "usebackq tokens=1-10 delims==" %I IN (`Dir *.mp4 /b /OD`) DO @echo "%I %J %K %L %M %N %O %P %Q %R"
"ファイル名.mp4         "

結果が空白が含まれている。このため空白が出力されているらしい。(元環境大臣構文)
最大でも最新のファイル一つしか入っていない。Forの説明からすると各変数に入っていくはずだが、

戦いはこれからだ

今のところうまくいっていないのが、このあたりのサブルーチンを使う方法を次は試してみる。
for - Windows バッチ ファイル内の文字列を連結する方法 - 入門サンプル
【Windowsバッチファイル】引数のダブルクォーテーションを削除するサンプル
バッチファイルで変数を使う方法 | そまちょブログ
引数のダブルクォーテーションを削除するサンプル | Windows バッチファイル
windows - バッチファイルで変数を複数行にわけて指定したときのダブルクォーテーションの指定について - スタック・オーバーフロー

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?