标题: [文件操作] 批处理求助 历遍文件夹下的图片文件,用上几级文件夹的名称来重命名 [打印本页]
作者: 937501916 时间: 2019-11-2 13:46 标题: 批处理求助 历遍文件夹下的图片文件,用上几级文件夹的名称来重命名
大佬们,是这样的:
总文件夹下面有很多子目录,子文件
总文件夹+文件夹一层+文件夹二层+文件夹三层+文件1,2,3,4,5....
总文件夹+文件夹一层+文件夹二层+文件1,2,3,4,5....
总文件夹+文件夹一层+文件1,2,3,4,5....
总文件夹+文件夹一层+文件夹二层+文件夹三层+文件夹四层+文件1,2,3,4,5....
总文件夹+文件夹一层+文件夹二层+文件夹三层+文件夹四层+文件夹五层+文件1,2,3,4,5....
总文件夹+文件夹一层+文件夹二层+文件夹三层+文件1,2,3,4,5....
总文件夹+文件夹一层+文件夹二层+文件夹三层+文件夹四层+文件夹五层+文件夹六层+文件夹七层+文件夹八层+文件1,2,3,4,5....
......
我想将bat文件放在总文件夹下,双击就可以。
文件夹的层数是不定的,历遍就行。
我想要的命名方式是:文件夹一层+我输入的文字+文件的上一层目录的名称+3位数序列号.图片格式本身
具体就是:
文件夹一层+我输入的文字+文件夹三层+文件001,002,003,004,005....图片格式本身
文件夹一层+我输入的文字+文件夹二层+文件001,002,003,004,005....图片格式本身
文件夹一层+我输入的文字+文件夹一层+文件001,002,003,004,005....图片格式本身
文件夹一层+我输入的文字+文件夹四层+文件001,002,003,004,005....图片格式本身
文件夹一层+我输入的文字+文件夹五层+文件001,002,003,004,005....图片格式本身
文件夹一层+我输入的文字+文件夹三层+文件001,002,003,004,005....图片格式本身
文件夹一层+我输入的文字+文件夹八层+文件001,002,003,004,005....图片格式本身
就是中间不管有几层文件夹,我只要第一层和倒数第一层的文件夹名字。中间加入我自己想输入的文字,加上序列号
事情就是这样,跪求大佬们给条明路,拜谢。
作者: 937501916 时间: 2019-11-2 18:15
@echo off
mode con lines=3000
cd /d "%~dp0"
set /p input=输入:
for /f "delims=" %%a in ('dir /ad/b') do (
set n=100001
set "first=%%a"
for /f "delims=" %%b in ('dir /a-d/b ".\%%a\" 2^>nul') do (
set "file=.\%%a\%%b"
setlocal enabledelayedexpansion
echo;"!file!" --^> "!first!-%input%-!first!-!n:~-4!%%~xb"
ren "!file!" "!first!-%input%-!first!-!n:~-4!%%~xb"
endlocal
set /a n+=1
)
for /f "delims=" %%b in ('dir /ad/b/s ".\%%a\" 2^>nul') do (
set m=100001
set "last=%%~nxb"
for /f "delims=" %%c in ('dir /a-d/b "%%b\" 2^>nul') do (
set "file=%%b\%%c"
setlocal enabledelayedexpansion
echo;"!file!" --^> "!first!-%input%-!last!-!m:~-4!%%~xc"
ren "!file!" "!first!-%input%-!last!-!m:~-4!%%~xc"
endlocal
set /a m+=1
)
)
)
pause
exit
作者: ivor 时间: 2019-11-2 20:29
本帖最后由 ivor 于 2019-11-2 22:06 编辑
- <# :
- @Powershell "& {[ScriptBlock]::Create((gc '%~f0' -raw)).Invoke()}" & pause & goto :eof
- #>
- $cust = "自定义"
- dir -Recurse -File| %{
- $fileArray = ($_.FullName.TrimStart("$pwd")).Split('\')
- if($fileArray.Count -ge 2){
- $par=[System.IO.Path]::GetDirectoryName($_.FullName)
-
- if($par -eq $parent){
- $num += 1
- }
- else{
- $num = 1
- }
- $newName=($fileArray[0],$cust,$fileArray[-2],("{0:d4}" -f $num) -join '+')+$_.Extension
- ren $_.FullName -NewName ($par+"\\"+$newName) -verbose
- }
- $parent=[System.IO.Path]::GetDirectoryName($_.FullName)
- }
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |