質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

3839閲覧

【batファイル】各フォルダのサイズが取得できない

user202102

総合スコア9

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2022/03/11 08:05

任意のドライブ配下の各フォルダの名前とサイズをテキストファイルに出力したく、下記サイトを参考にバッチファイルを作成したのですが
ファイル名のみ取得できてサイズが空欄になってしまっている状況です。

https://maigo-pg.seesaa.net/article/368261283.html

フォルダ内には、「test_a」、「test_b」というフォルダがありそれぞれ90byte、10byteあります。
作成したバッチファイルは下記のとおりで、ほぼそのままなのですがどこかにミスがあるのでしょうか。

試したことは、管理人とし実行してみたり出力先やpushdを別の場所にしてみたりましたが解決できませんでした。
お手数ですがどうすればサイズが表示されるか教えていただけますでしょうか。

bat

1echo off 2 3Set logPath=F:\user\bat\sizelist.txt 4 5if exist %logPath% del %logPath% 6set title=file name,size,byte 7 8echo folsersize >> %logPath% 9pushd F:\user\bat\ 10echo %title% >> %logPath% 11for /D %%d in (*) do call :subrtn "%%d" 12 13exit /b 14 15:subrtn 16for /F "tokens=3 delims= " %%a in ('dir /s %1 ^| find "個のファイル"') do set size=%%a 17echo %1,"%size%",byte >> %logPath% 18goto :EOF

出力されたテキストファイル

txt

1file name,size,byte 2"test_a","",byte 3"test_b","",byte

環境
Windows 10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2022/03/11 14:13 編集

特に間違いは無いようです。 コマンドプロンプトで dir コマンドを実行して、 10 個のファイル 203,922 バイト のような表示がありますか?言語が日本語になっていないとか?
guest

回答1

0

ベストアンサー

■デスクトップの「新しいフォルダー」を調べて、sizelist.txtを作成するプログラムです

cmd

1@echo off 2 3rem ■遅延環境変数を有効にする 4setlocal enabledelayedexpansion 5 6rem ■sizelist.txtの作成先(デスクトップ) 7set logPath="%userprofile%\Desktop\sizelist.txt" 8if exist !logPath! (del !logPath! /q) 9echo.file name,size,byte >> !logPath! 10 11rem ■調査先のフォルダ(デスクトップの「新しいフォルダー」) 12set target="%userprofile%\Desktop\新しいフォルダー" 13for /f "tokens=*" %%I IN ('dir !target! /a:D /o /b /s') do ( 14for /f "tokens=3" %%a in ('dir /a /-c /s %%~fI ^| find "個のファイル"') do (set size=%%a) 15echo."%%~nI","!size!",byte >> !logPath! 16) 17pause 18exit

■実行結果

file name,size,byte
"test_a","90",byte
"test_b","10",byte

■注意事項■

①遅延環境変数を有効にしています。setlocal enabledelayedexpansion命令

②カレントディレクトリを変更していません。pushd命令

③サブルーチンは使用しておりません。

④txt作成先、調査先はご自身の環境に合わせてください。

⑤分からない命令はお手数ですがご自身で調べてみてください。

投稿2022/03/11 11:54

編集2022/03/11 12:01
ccc-

総合スコア342

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

user202102

2022/03/16 04:33

遅延環境変数を有効にしていないのが原因のようでした。サンプルファイルも確認できました。 ベストアンサーにさせていただきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問