标题: [文本处理] [已解决]批处理文件夹内图片的名字 [打印本页]
作者: 528239120 时间: 2021-12-7 10:33 标题: [已解决]批处理文件夹内图片的名字
本帖最后由 528239120 于 2021-12-7 11:30 编辑
有差不多1000个文件夹 每个文件夹里面有4-50张图片 图片已经用1、2、3……数字命名好了,现在需我在图片名称前面加上文件名字 使其变成“文件夹名-1、文件夹名-2、文件夹名-3、……文件夹名-50”原来的命名顺序不能乱。
下面是我现在用的代码,因为我之前的图片都已经是按照数字命名好了,所以会出现排序问题“ 1 10 11 2……”不知道如何修改,求大神指点- @echo off
- setlocal EnableDelayedExpansion
- for /f "delims=" %%a in ('dir/b/ad') do (
- set a=1
- for /f "delims=" %%i in ('dir/b/a-d "%%~na\*.*"') do (
- ren "%%~na\%%~nxi" "%%~na-!a!%%~xi"
- set /a a+=1
- )
- )
- echo 完毕,按任意键结束
- pause>nul [/code
复制代码
作者: Fit 时间: 2021-12-7 10:47
好像dir出来的文件名顺序有一定的排列方式,但是打开文件夹又没变化;所以bat修改就可以了,修改后,文件夹里打开,顺序一样不变
作者: Batcher 时间: 2021-12-7 11:26
回复 1# 528239120
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ- @echo off
- cd /d "%~dp0"
- for /d %%a in (*) do (
- echo 正在处理文件夹:%%a
- pushd "%%a"
- for /f "delims=" %%b in ('dir /b /a-d *.jpg ^| find /c /v ""') do (
- for /l %%c in (1,1,%%b) do (
- if exist "%%c.jpg" (
- ren "%%c.jpg" "%%a-%%c.jpg"
- )
- )
- )
- popd
- )
复制代码
作者: 528239120 时间: 2021-12-7 11:30 标题: [已解决]批处理文件夹内图片的名字
感谢论坛的@went热心大佬帮忙解决了。- #&@cls&cd /d "%~dp0" & @powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause&exit
- Get-ChildItem * | Where-Object { [System.IO.Directory]::Exists($_.FullName) } | foreach {
- $_.FullName
- Get-ChildItem -Path $_.FullName -Filter '*.jpg' | Sort-Object { [int]$_.BaseName } | foreach {
- Move-Item -Path $_.FullName -Destination ('{0}\{1}-{2:000}.jpg' -f $_.Directory.FullName,$_.Directory.BaseName,[int]$_.BaseName)
- }
- }
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |