Batch file 循环及;DOS批处理中的变量算法

Batch file 循环及;DOS批处理中的变量算法,batch-file,dos,Batch File,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 re

比如说,我每天晚上都想以循环的方式重新命名十幅图像。我编写了一个批处理文件,它执行以下操作:

@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
我想将其重写为一个循环,因为我的图像计数刚刚增加,但是我有一些问题-我的脚本刚刚终止,shell窗口关闭,不让我看到任何输出(我已将所有“ren”更改为“echos”,以查看输出内容)。以下是我目前的尝试:

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出乎意料”,要么当我尝试将其更改为%%a时,它会崩溃,窗口关闭。有什么提示吗?

将所有图像移动一个,第一个图像将移回最后一个位置:

@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  

添加了少量增强功能:将计数设置为要循环浏览的图像数。

将所有图像移动一次,第一个图像将移回最后一个位置:

@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  

增加了一些增强功能:将count设置为要循环浏览的图像数。

尝试输入
暂停
,查看错误是什么?还可以尝试使用
%%a
而不是
%a%
。谢谢。。。使用%%a有效,但我仍然无法设置或访问t。我刚刚在cmd中运行了一个小实验,t不起作用,因为批处理无法处理数字。如果你把a设为259,那很好,如果你把t设为a-1,它会回显为“259-1”,而不是258。另外,当使用set时,它似乎只在等号之间没有空格时才起作用,因此它只能像
set t=%a%-1
@C一样处理批处理文件中的数字。您应该使用
/a
。试着输入
暂停
以查看错误是什么?还可以尝试使用
%%a
而不是
%a%
。谢谢。。。使用%%a有效,但我仍然无法设置或访问t。我刚刚在cmd中运行了一个小实验,t不起作用,因为批处理无法处理数字。如果你把a设为259,那很好,如果你把t设为a-1,它会回显为“259-1”,而不是258。另外,当使用set时,它似乎只在等号之间没有空格时才起作用,因此它只会像
set t=%a%-1
@Bali C一样工作,以处理批处理文件中的数字。你应该使用
/a
。比我要弥补的更好=d你比我更好!干杯这个DOS语法很奇怪。@darrrren这是cmd语法,不是DOS。DOS中没有设置/a或/l的
。比我要化妆的还要好你比我好!干杯这个DOS语法很奇怪。@darrrren这是cmd语法,不是DOS。DOS中没有设置/a
或/l的