DOS求助,有能力的大佬帮帮忙
本帖最后由 何必在意i 于 2021-8-30 23:04 编辑就是全部文件夹下的所有子文件夹里面的图片全部批量命名
命名前缀是Pic_
_后面是数字
文件格式比较多有png,jpg,jpeg,gif,tiff,这些,希望大佬能做一个直接直接查多少的,而不是固定文件数量,不然我的文件一多就要去改代码,还有一个稍微小一点的要求就是,少于9个文件的(Pic_数字)前面不加0,大于10个的时候就前面加0,效果看截图
这个是大于9的效果
这个是小于9的效果
这个是网络上找的一个代码,如果大佬不想写可以直接改
@echo off&setlocal enabledelayedexpansion
for /r /d %%a in (*.*) do (
pushd %%a
set n=100
for /f "delims=" %%B in ('dir /a-d /b /on^|findstr /i "jpg$ JPG$ png$ PNG$ gif$ GIF$ tiff$ jpeg$"') do (
set /a n+=1
set m=!n:~1!
ren "%%B" "Pic_!m!%%~xB"
)
popd
)
基本所有的更名器都用过了,不能一键修改子文件夹里面的图片名字,你要硬要说搜索图片全选改名字的人麻烦不用留言了,我需要的是按顺序批量修改名字。 本帖最后由 hfxiang 于 2021-8-31 15:12 编辑
何必在意i 发表于 2021-8-31 13:43
这个直接提示有重复名或者找不到文件,无法修改
已修改,并经1~16个文件的测试,没问题了
@echo off&setlocal enabledelayedexpansion
set "_strlen=set $=^!#1^!#&set ##=&set $=^!$^!fedcba9876543210&set/a##+=0x^!$:~16,1^!"
set "mm=0000000000000000"
for /r /d %%a in (*.*) do (
pushd %%a
set /a n=0
for /f "delims=" %%B in ('dir /a-d /b /on^|findstr /i "jpg$ JPG$ png$ PNG$ gif$ GIF$ tiff$ jpeg$"') do (
set /a n+=1
)
set #1=!n!
(%_strlen%)
set /a n=0
for /f "delims=" %%B in ('dir /a-d /b /on^|findstr /i "jpg$ JPG$ png$ PNG$ gif$ GIF$ tiff$ jpeg$"') do (
set /a n+=1
set"m=%mm%!n!"
call set "m=%%m:~-!##!%%"
ren "%%B" "Pic_!m!%%~xB"
)
popd
)
endlocal 支持你,我来不了。 写过python类似的,bat你要写循环一遍确定数量吧? 执笔为画卷 发表于 2021-8-30 22:23
写过python类似的,bat你要写循环一遍确定数量吧?
正常来说应该不用循环,可能要查有多少个文件,因为要做的就是大于9的前面就要加一个0,小于9的前面不加0 Sashka 发表于 2021-8-30 22:27
只会写python的,楼主考虑一下python的吧,相对容易理解
可以用python写,只不过,我电脑没有,没办法编译 Sashka 发表于 2021-8-30 22:27
只会写python的,楼主考虑一下python的吧,相对容易理解
你们写python会封装就更好了,我之前也是有python的就是重装电脑之后就没有安装了,我本来是想不用编程软件来弄这个的 用菲菲更名助手吧
windows下面的批处理比linux下面的差多了 netspirit 发表于 2021-8-30 22:32
用菲菲更名助手吧
windows下面的批处理比linux下面的差多了
大哥,如果市面上的更改器有用就不会想搞代码了,目前我基本把所有的都用过了,不能一键批量修改子文件里面的文件名 这已经属于DOS命令的高级操作了。