循环& DOS 批处理中的变量算术

发布于 2024-12-27 16:55:44 字数 775 浏览 1 评论 0原文

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

@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 窗口关闭而不让我关闭查看任何输出(我已将所有“rens”更改为“echo”以查看输出是什么)。这是我当前的尝试:

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 时,它只是崩溃并且窗口关闭。有什么建议吗?

I have, say, ten images that I'd like to rename in a looping fashion every night. I've written a batch file that does the following:

@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

I'd like to rewrite this to be a loop since my image count just increased, however I'm having some issues - my script just terminates and the shell Window closes without letting me see any of the output (I had changed all "rens" to "echos" to see what the output would be). Here's my current attempt:

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

As I said before, I get either "a is unexpected", or when I try and change it to %%a, it just crashes and the window closes. Any tips?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜灵血窟げ 2025-01-03 16:55:44

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

@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  

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

Shifting all the images by one, the first one is moved back to the very last position:

@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  

Little enhancement added: set count to the number of images you are going to cycle through.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文