• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コマンドプロンプトの出力内容の加工の仕方について)

コマンドプロンプトの出力内容の加工方法と容量一覧表示

このQ&Aのポイント
  • コマンドプロンプトでフォルダとの容量一覧を表示する方法について調べています。duコマンドは日本語表示ができず、du.exeはバイト単位の表示しかできないため、他の方法を模索中です。
  • フォルダとの容量一覧を表示するためには、duコマンドやdu.exeを使用することが一般的ですが、表示方法に制約があります。テキスト処理ツールを使用し、数値の変換方法を試行錯誤しているが、良い方法が見つかっていません。
  • C言語などのプログラム言語を使用せずに、コマンドプロンプトの出力内容を加工する方法を模索中です。duコマンドやdu.exeは制約があるため、他のアプローチを検討したいと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

切り分けにはforを使う 計算にはset /aを使う ただしset/aは小数点以下の計算が出来ないから、そこは自分で作る 具体的には @echo off for /f "usebackq tokens=1,*" %%i in ( `du -t e:\` ) do ( echo %%iB %%j call :b2k %%i "%%j" call :b2m %%i "%%j" echo. ) pause>NUL exit 0 :b2k set num=%~1 set /a K=1024 set /a int=%1 / %K% set /a dec1= (( %num% %% %K% ) * 10 ) / %K% set /a dec2=(((( %num% %% %K% ) * 10 ) %% %K% ) * 10 ) / %K% set KB=%int%.%dec1%%dec2% echo %KB%KB %~2 exit /b 0 :b2m set num=%~1 set /a M=1024*1024 set /a int=%1 / %M% set /a dec1= (( %num% %% %M% ) * 10 ) / %M% set /a dec2=(((( %num% %% %M% ) * 10 ) %% %M% ) * 10 ) / %M% set MB=%int%.%dec1%%dec2% echo %MB%MB %~2 exit /b 0 みたいな感じ。 ざっくり作ったんで小数点以下第二位までの表示、かつ第三位の四捨五入とかはしてないです。 適当にいじってみてください。

MetalLover
質問者

お礼

Chronos198さん 大変ご丁寧な説明をありがとうございます。 是非、参考にさせていただきます。

MetalLover
質問者

補足

かなりスキルがある方のようだったので、追加で質問をさせていただきたいと思います。 コマンドプロンプトのバッチファイルを実行した場合、 コマンド履歴が消えてしまい、↑ボタンでコマンドをさかのぼれなくなってしまうようです。 これを回避する方法はないのでしょうか?

関連するQ&A