以下は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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチでテキストファイルから...
-
コマンドプロンプト標準出力と...
-
コマンドプロンプトで2ヶ月前3...
-
コマンドプロンプト画面の閉じ...
-
バッチファイルで常に最新の現...
-
呼び出し元バッチを知るには?
-
VBアプリケーションで終了コー...
-
子バッチ内のキー入力処理へ自...
-
バッチファイルで昨日の日付を取得
-
コマンドプロンプト(バッチファ...
-
コマンドプロンプトの「%1」と...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
#include <Windows.h>というヘ...
-
1つのhtmlで複数のページを表...
-
バッチ終了時にDOS窓を閉じるコ...
-
binファイルを解凍したいの...
-
VBAでワークシートを引数として...
-
Excel(エクセル) VBA プロシー...
-
バッチファイル 特定ウインドウ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで昨日の日付を取得
-
コマンドプロンプト標準出力と...
-
コマンドプロンプトで2ヶ月前3...
-
コマンドプロンプト(バッチファ...
-
VBアプリケーションで終了コー...
-
絶対パス名からファイル名を取...
-
コマンドプロンプト画面の閉じ...
-
IPアドレスの第3オクテットだ...
-
バッチファイルでDirで取得した...
-
呼び出し元バッチを知るには?
-
子バッチ内のキー入力処理へ自...
-
Kシェルでgotoのような処理を作...
-
バッチファイルで常に最新の現...
-
コマンドプロンプト(バッチ)...
-
DOSのバッチで、変数中のファイ...
-
バッチファイルで2つ以上の変...
-
バッチファイル(for文)がうま...
-
batの変数を直接vbsのプログラ...
-
echoとsystem関数について
おすすめ情報