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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    

DOS按规则批量重命名所有(子)目录下文件

一个路径下面有很多个很多级的子目录,里面都包含 R(??)*.jpg还有R(??)*.tif若干个,希望改名的时候整个路径下的所有子目录里的同编码的文件全部一起改了。

比如 R(20)百度知道开放平台.jpg 和 R(20)手机知道个人中心经验.tif 等等这些文件名都改成 R(20)咨询专家 改名后后缀名不变。

好像是要用echo吧。请问怎么写?
恩,希望用dos或批处理bat文件实现都行

一种方法就是做个批处理程序,内容就是无数个rename命令行
这么多命令行一个个敲不是累坏了,用excel处理。
第一步,命令行进入文件所在目录,输入命令:dir/b > c:\filename,在C盘就有一个保存目录下所有文件名的文本文件了。
第二步,用excel打开这个文件(打开对话框的文件类型要选择所有文件),所有的文件名就出现在excel的第一列了。
第三步,excel编辑这个文件做成批处理需要的格式,文件名前面插入一列,全部填上rename,第二列是原始文件名了,第三列是要修改成的文件名,按照你的需求来做吧,复制、查找替换什么的。
第四步,保存文件,保存对话框选择所有文件类型,文件名写成filename.bat。主要是扩展名写成bat,前面的名字随便了。
第五步,filename. bat拷贝到要处理的那个目录下,命令行进入这个目录,执行filename.bat。
完成。
其他需求,自己可以想想看。
参考技术A FOR /f "delims= tokens=1*" %a IN ('dir /a-d/b/s *.jpg') DO (
copy %a e:\01
)
FOR /f "delims= tokens=1*" %a IN ('dir /a-d/b/s *.tif') DO (
copy %a e:\02
)
参考技术B 下载个 应用软件不就好了吗?比如 filerename 批量改名专家

以上是关于bat批处理文件夹下所有子文件夹下最后一个的文件重命名?的主要内容,如果未能解决你的问题,请参考以下文章

DOS按规则批量重命名所有(子)目录下文件

批处理修改文件名

bat批量重命名文件(在子文件夹里)

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

急!用bat制作批处理文件,复制一个文件到多个以日期命名文件夹下并以“文件夹名+文件本名”的形式重命名

bat 拷贝同一名称文件夹下所有文件?