[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 2# aa77dd@163.com


    老师您好,我有个问题解决不了,和这个问题很相似,想请您指点一下。

我有
a1/b1/文件若干.jpg
a2/b2/文件若干.jpg
...
其中,每个文件夹下文件若干,是以数字序号排序的,比如0188,0189,0190这样

这种结构下,想把每个文件夹下的的文件中序号最大的那个文件改名为xxx

请老师指教

TOP

回复 5# Batcher

完美的解决了我的问题,向您致谢

TOP

回复 5# Batcher

感觉看不太懂,没看出来用什么参数排的序

请问,如果想在此基础上,将每个文件夹内其他的文件(不是最大的那些)全部删除,该怎么增加这个命令呢

TOP

回复 8# Batcher

目的:将每个底层文件夹下的编号最大的tif图片文件名位数+5,并将改动过名称的图像按照原有层级提取到文件夹“更改后”里,写法如下:

@echo off
setlocal enabledelayedexpansion
for /d %%a in ("*") do (
    for /d %%b in ("%%a\*") do (
::将LastFile定义为文件中的最大值
        set "LastFile="
        for /f "delims=" %%c in ('dir /b /a-d "%%b\*.tif"') do (
::使用~n去掉后缀名(便于计算,这里不知道如果没有去掉后缀名可不可以用set /a计算,不过懒得去测试了)
            set "LastFile=%%~nc"
        )
::将LastFile2定义为文件中的最大值+5
        set /a LastFile2=!LastFile!+5
::重命名
        ren "%%b\!LastFile!.tif" "!LastFile2!.tif"
::建立临时文件存放文件夹.\更改后
if not exist ".\更改后\%%b\" (md ".\更改后\%%b\")
::复制文件并重命名
copy "%%b\!LastFile2!.tif" ".\更改后\%%b\"!LastFile2!.tif"

    )
)

pause


测试了一小批数据似乎没有问题了,但是因为实际操作数据量很大,怕到时候出了问题检查不出来,所以请老师帮我看看代码有没有硬伤

TOP

其实应该是按照原有层级提取出最后一个文件,再改名+5

这样,提取前的图像命名就没有改变,一定程度上能规避很多误操作带来的错误

TOP

回复 13# Batcher

那我不知道怎么改了,我的图像名称都是0开头的,0001-0999之间,昨天测试的时候没使用真实数据

请您再给点指导意见。

TOP

回复 15# Batcher


    多谢(o^^o)

TOP

返回列表