bat批量重命名文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat批量重命名文件相关的知识,希望对你有一定的参考价值。

文件夹a内有大量jpg和png图片(含子文件夹),我想把这些图片按顺序命名,并把原文件名保存到bat.log文件内,一行一个文件名。例如:
a/img.jpg;
a/url/photokk.jpg;
a/url2/myfile.jpg;
命名为:
a/10001.jpg;
a/url/10002.jpg;
a/url2/10003.jpg;
当然新文件名可以放到其它文件夹中,可以不带子文件夹,如:
b/10001.jpg;
b/10002.jpg;
b/10003.jpg;
另外bat.log需要保存有:
img.jpg
photokk.jpg
myfile.jpg
一行一个文件名,可不带路径

参考技术A 1.bat重命名文件
ren aaa.txt bbb.doc
解释:将 aaa.txt 命名为 bbb.doc
2.循环重命名一个文件夹下的所有结尾为xls的文件,前加上A_
for /f %%i in ('dir /b *.xls') do (ren %%i A_%%i)
参考技术B 借用canyuexiaolang的代码略作修改

@echo off & setlocal enabledelayedexpansion
set "foldername=a"
set /a num=10000
rem foldername设置文件夹名称
pushd "!foldername!" || goto :eof
(for /f "tokens=* delims=" %%i in ('dir /s /b /a-d /on *.jpg *.png') do (
set /a num+=1
ren "%%i" "!num!.jpg" && echo !num! %%~nxi "%%~fi"
))>"%~dp0bat.log"
echo 批量重命名完成!
pause追问

谢谢你了,但分只能给一个。。

参考技术C @echo off & setlocal enabledelayedexpansion
set "foldername=a"
set "xname=png jpg"
set /a num=10000
rem foldername设置文件夹名称
pushd "!foldername!" || goto :eof
for %%a in (%xname%) do (
for /f "tokens=* delims=" %%i in ('dir /s /b /a-d *.%%a') do (
set /a num+=1
ren "%%i" "!num!.%%a"
echo %%~nxi
)>>"%~dp0bat.log"
)
pause

...好吧本回答被提问者采纳
参考技术D @echo off&setlocal enabledelayedexpansion
set n=10001
for /f "delims=" %%f in ('dir /s /b *.jpg *.png') do (
echo %%~nxf>>bat.log
set fn=!n!%%~xf
move "%%f" "%%~dpf!fn!"
set /a n+=1
)

bat批处理文件夹下所有子文件夹下最后一个的文件重命名?

文件夹下的每个子文件夹最后一个的文件重命名为-00编号

参考技术A 不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 在当前目录下所有子文件夹里按顺序排在最后一个的文件名称末尾添加指定字符内容
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "current=%cd%"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$codes=@'
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
public static class ExpDir

    [DllImport("Shlwapi.dll", CharSet=CharSet.Unicode)]
    public static extern int StrCmpLogicalW(string p1, string p2);
    public static string[] Sort(string[] f)
    
        Array.Sort(f, StrCmpLogicalW);
        return f;
      

'@;
Add-Type -TypeDefinition $codes;

$b=[Convert]::FromBase64String("IC0tPiA=");
$c=[Text.Encoding]::Default.GetString($b);
$suffix='-00';
$current=$env:current;
$folders=@(dir -literal $current -recurse|?$_ -is [System.IO.DirectoryInfo]);
for($i=0;$i -lt $folders.length;$i++)
    $files=@(dir -literal $folders[$i].FullName|?$_ -is [System.IO.FileInfo]);
    if($files.length -ge 1)
        $arr=[ExpDir]::Sort($files);
        $oldfile=get-item -literal ($folders[$i].FullName+'\\'+$arr[$arr.count-1]);
        $base=$oldfile.BaseName -replace ([regex]::Escape($suffix)+'$'),'';
        $oldfile.FullName.replace($current,'')+$c+$base+$suffix+$oldfile.Extension;
    

以上是关于bat批量重命名文件的主要内容,如果未能解决你的问题,请参考以下文章

bat批量重命名文件

bat批处理:根据文本文件批量重命名文件

Bat批处理:批量重命名包含指定名称文件夹里的指定文件

Windows系统下批量重命名文件(bat命令版本)

.bat 用于批量重命名以增加 fname 中的数字

bat遍历当前目录下的文件,批量重命名