以下はEドライブを走査してフォルダごとのjpgやpngなどのファイルの数を全て表示するバッチ処理ですが。基本的に上手く動きますが%を含むファイル名、フォルダ名に当たると上手く動きません。どうしたらいいでしょうか?”ファイル名、フォルダ名に%を使うな”という回答以外でお願いします。
@echo off
pushd E:\
for /f "delims=" %%j in ('dir /b /s /a:d') do call :sub "%%j"
exit /b
:sub
echo ///////////////////////////////////////////////////////////////////////////
for /f "delims=" %%x in ('dir /b %1 ^| find /c ".jpg"') do call :jpg %%x
for /f "delims=" %%x in ('dir /b %1 ^| find /c ".JPG"') do call :jpg2 %%x
for /f "delims=" %%x in ('dir /b %1 ^| find /c ".png"') do call :png %%x
for /f "delims=" %%x in ('dir /b %1 ^| find /c ".bmp"') do call :bmp %%x
echo %1
echo jpg %jpg_c%
echo png %png_c%
echo bmp %bmp_c%
echo JPG %jpg2_c%
goto :EOF
:jpg
set jpg_c=%1
:echo %1
goto:EOF
:jpg2
set jpg2_c=%1
:echo %1
goto:EOF
:png
set png_c=%1
:echo %1
goto:EOF
:bmp
set bmp_c=%1
:echo %1
goto:EOF
:all
set all_c=%1
:echo %1
goto:EOF
No.2ベストアンサー
- 回答日時:
こんにちは。
いろいろと試されてますね。以下の例は拡張子がjpgのファイルがあるフォルダとファイル数を表示するバッチの例です。"%"が含まれても問題ありません。
表示するだけでなく環境変数に格納したいならもう少し記載が
必要になります。
pushd e:\
dir /s *.jpg | findstr "のディレクトリ 個のファイル"
この回答への補足
回答ありがとうございます、先日は詳しい回答ありがとうございました
最終的に、%を名前に含むフォルダをmoveで移動する必要があるので、表示だけでなく、どうしても環境変数に代入する必要があります。
手間を取らせて申し訳ありませんが、気が向いた時にでも、正しく動かせる代入方法も書いていただけるとうれしいです、コマンドプロンプトはほかにも^やキリル文字でうまく動かないことが分かってきたので(shift_jisに起因する問題)C++にでも挑戦しようと思ってます。
No.1
- 回答日時:
call文は引数が2度評価されるので、1度目に評価した結果に%が含まれると、更にその%を展開しようとします。
set /?で「遅延展開」について参照してみてください。
遅延展開により、for文の中でcall文を使用した際に2重評価されるのを防げる可能性があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチでテキストファイルから...
-
IPアドレスの第3オクテットだ...
-
コマンドプロンプト標準出力と...
-
呼び出し元バッチを知るには?
-
バッチファイルで昨日の日付を取得
-
コマンドプロンプトで2ヶ月前3...
-
コマンドプロンプトの条件分岐...
-
絶対パス名からファイル名を取...
-
DOSのバッチで、変数中のファイ...
-
PowerShellからPowerShellを呼...
-
☆BAT:日時をTXTファイル名にし...
-
Excelで住所録を地域ごとに振り...
-
windowsのバッチプログラム
-
BATのIF文について質問
-
子バッチ内のキー入力処理へ自...
-
WinMailCmdのバッチファイルに...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
VB6側からテキストファイルをク...
-
コマンドプロンプトの「%1」と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで昨日の日付を取得
-
コマンドプロンプト標準出力と...
-
コマンドプロンプトで2ヶ月前3...
-
コマンドプロンプト画面の閉じ...
-
コマンドプロンプト(バッチファ...
-
バッチファイルで常に最新の現...
-
VBアプリケーションで終了コー...
-
コマンドプロンプト(バッチ)...
-
バッチファイルでDirで取得した...
-
DOSのバッチで、変数中のファイ...
-
IPアドレスの第3オクテットだ...
-
バッチファイルで2つ以上の変...
-
子バッチ内のキー入力処理へ自...
-
バッチファイル(for文)がうま...
-
絶対パス名からファイル名を取...
-
呼び出し元バッチを知るには?
-
DOSのバッチで、テキストファイ...
-
バッチファイル テキストファイ...
-
echoとsystem関数について
おすすめ情報