2012-01-18 11 views
0

私は、毎晩ループのように名前を変更したい画像が10個あります。私は、次のないバッチファイル書いている:私は、しかし、私はいくつかの問題を抱えている、私の画像数がちょうど増加するのでループになるこの書き換えたいのですがDOSでのループ&可変算術バッチ

@echo off 
cls 
ren image10.jpg imagetemp.jpg 
ren image1.jpg image10.jpg 
ren image2.jpg image1.jpg 
ren image3.jpg image2.jpg 
ren image4.jpg image3.jpg 
ren image5.jpg image4.jpg 
ren image6.jpg image5.jpg 
ren image7.jpg image6.jpg 
ren image8.jpg image7.jpg 
ren image9.jpg image8.jpg 
ren imagetemp.jpg image9.jpg 
exit 

を - 私のスクリプトは、ちょうど終了し、シェルウィンドウは出力のいずれかを見ることなく終了します(出力を見るためにすべての "レン"を "エコー"に変更しました)。私が前に言ったように

cls 
ren image59.jpg imagetemp.jpg 
ren image1.jpg image59.jpg 

FOR %a IN (2 59) DO (
    set t = %a% - 1 
    ren image%a%.jpg image%t%.jpg 
) 
ren imagetemp.jpg image58.jpg 
exit 

は、私はどちらか「aは予想外である」を取得、または私がしようとすると%%に変更したときに、それだけでクラッシュするとウィンドウが閉じます。ここに私の現在の試みです。任意のヒント?一つ

+1

エラーが何であるかを確認するには、「一時停止」を入れてみてください。また、 '%a%'ではなく '%% a'を使ってみてください。 –

+0

ありがとう... %% aを使用していますが、まだtを設定またはアクセスできません。 – Darrrrrren

+0

私はちょうどcmdで少し実験を実行しましたが、バッチは数字を扱うことができないので、tは動作しません。 aを259に設定した場合、tを - 1に設定すると、258ではなく "259 - 1"にエコーされます。また、setを使用すると、等号の間にスペースがない場合にのみ動作するように見えます'set t =%a% - 1'のようにしか動作しません。 –

答えて

3

シフトすべての画像は、最初のものは、非常に最後の位置に戻されます。

@echo off 
cls 
set count=59 
ren image1.jpg imagetemp.jpg 

for /L %%a IN (2,1,%count%) do call :rename %%a 

ren imagetemp.jpg image%count%.jpg 
goto :EOF 

:rename 
set /A t=%1-1 
ren image%1.jpg image%t%.jpg 

リトル強化が追加:あなたが一巡しようとしている画像の数にカウント数を設定します。

+0

私が作ろうとしていたよりも良い= D – Mechaflash

+0

あなたは私よりも男/女性です!乾杯。このDOS構文は変なものです。 – Darrrrrren