つい集めてしまうものはなんですか?

:loop
set id=0
if '%1' == '' goto end
cd %1
if exist %1 for %%i in (*.bmp) do (
set id+=1
echo %id%
)
shift
goto loop
:end
pause

バッチファイルをSend Toフォルダにおいて
送られてきた画像データをカウントアップしていきながら名前を
id.bmp変えていきたいのですが、
idをカウントアップさせたいのですが方法がわかりません。
どうすればカウントアップされるのでしょうか?

A 回答 (2件)

遅延展開を使うようにすれば出来るようです


バッチファイルの起動を
cmd /v /c バッチ名.bat
といった具合にします

if exist %1 for %%i in (*.bmp) do (
set id+=1
echo %id%
)

if exist %1 for %%i in (*.bmp) do (
set /a id+=1
echo !id!
)
といった具合にしてみてください
    • good
    • 1
この回答へのお礼

お返事ありがとうございます。

遅延展開を使用するとSend Toから送られてきたパスを
取得する方法がわからなかったので
別にリネーム用のプログラムを作成する方法で回避いたしました。

お礼日時:2008/05/19 15:54

cmd.exeの機能は結構OSによって変わるので、使っているOS(MS Windowsだとは思いますが、XP(SP3)とか2000とか)書いた方がいいですよ。



たぶんXPからじゃないかと思いますが、setコマンドに/aオプションが追加されています。セットする値を数式として評価してくれます。ですので、

set /a id=%id%+1
のようにすれば環境変数idの(数値としてみたときの)値を一つ増やすことができます。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
これからはOS環境を書くようにいたします。

教えていただいた方法を試してみましたが
for文の中ではidは+1をされずに
for文をでてから足された数を出力していたので、
別にリネーム用のプログラムを作成する方法で回避いたしました。

お礼日時:2008/05/19 15:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報