Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 对以数字开头的文件进行批处理重新编号_Windows_Batch File_Cmd - Fatal编程技术网

Windows 对以数字开头的文件进行批处理重新编号

Windows 对以数字开头的文件进行批处理重新编号,windows,batch-file,cmd,Windows,Batch File,Cmd,我经常使用这个批处理脚本来使用ImageMagick并排整理图像,它很好地实现了这一目的,除非我面对的是文件名以数字开头的图像 例如: ThisImage1.JPG ThisImage2.JPG ... ThisImage6.JPG 将首先重命名为: A1.JPG A2.JPG ... A6.JPG 然后将2乘2整理成: B1.JPG B3.JPG B5.JPG 但如果图像最初命名为: 111.JPG 112.JPG ... 116.JPG 然后,初步重命名为: A2.JPG A3.JP

我经常使用这个批处理脚本来使用ImageMagick并排整理图像,它很好地实现了这一目的,除非我面对的是文件名以数字开头的图像

例如:

ThisImage1.JPG
ThisImage2.JPG
...
ThisImage6.JPG
将首先重命名为:

A1.JPG
A2.JPG
...
A6.JPG
然后将2乘2整理成:

B1.JPG
B3.JPG
B5.JPG
但如果图像最初命名为:

111.JPG
112.JPG
...
116.JPG
然后,初步重命名为:

A2.JPG
A3.JPG
...
A7.JPG
这当然是个错误

这能解决吗

我的批处理脚本:

SETLOCAL EnableDelayedExpansion
SET IMCONV="%PROGRAMFILES%\ImageMagick-7.0.4-Q16\Convert"

SET COUNT=0
setlocal ENABLEDELAYEDEXPANSION
FOR /R %%T IN (*.jpg) DO (
SET /A COUNT=!COUNT!+1
REN %%T A!COUNT!.jpg
)
:EOF

 @echo off
set count=0
for %%x in (*.jpg) do set /a count+=1
set /a demi=%count% / 2

FOR /L %%x IN (1,2,%count%) DO (
set /a y = %%x + 1
%IMCONV% A%%x.jpg A!y!.jpg +append B%%x.jpg
)

endlocal

这似乎不是一个错误;您正在尝试递增字符串中的最后一个数字,并将字符串的其余部分更改为其他内容。
11
变为
A
。您希望得到什么输出?我正在尝试再次获得A1,因为程序的后一部分需要将A1整理为A2,而不是A2整理为A3…我不清楚您的批处理,第一批将所有jpg从当前文件夹迭代到所有子文件夹(并留下计数)。第二个仅在当前文件夹中计数。如果要计算出不均匀的结果,则应使用
set/A even=count/2*2
。否则,jpg文件以前的命名对新命名没有影响。bash按字母顺序而不是数字顺序列出文件。因此,也许可以将前导零添加到编号的文件中,而不是在(*.jpg)do(中为[/R]%T使用
来枚举循环中重命名的文件,您应该使用
for/F“delims=“%%T in('dir[/S]/B/A:-D“*.jpg”)do(
),否则您可能会在[/R]中遇到麻烦
在处理文件之前不会完全枚举所有文件,但/F的
方法会这样做;有关详细信息,请参阅。。。