求一个可以批量修改子文件夹里文件名称的bat

一个文件夹中有多个文件夹,每个文件夹里有不定数量的文件,现在需要把每个文件名称修改为所在文件夹的名字,并且按照之前文件的排序顺序命名。
》要修改名称 1
》 二级文件夹 a》要修改名称2

一级文件》二级文件夹b》要修改名称1

》 二级文件夹c
现在是要把1的名称改成a1
直到a里的文件名称全部修改
把b中的1改成b1
以此类推
直到所以文件名称都修改好

不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起运行
<# :
cls
@echo off
rem 将多个子文件夹里的的文件按照资源管理器里原有的顺序以其所在的文件夹名称重命名
mode con lines=3000
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~dp0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$path=$args[0];

$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

$folders=@(dir -liter $path|?{$_ -is [System.IO.DirectoryInfo]});
for($i=0;$i -lt $folders.length;$i++){
write-host ('------------'+$folders[$i].Name+'------------');
$files=@(dir -liter $folders[$i].FullName|?{$_ -is [System.IO.FileInfo]}|%{$_.Name});
if($files.length -ge 1){
$list=[ExpDir]::Sort($files);
for($j=0;$j -lt $list.count;$j++){
$ext='';
$m=[regex]::match($list[$j], '\.[^\.]+$');
if($m.Success){$ext=$m.groups[0].value;};
$newname=$folders[$i].Name+$ext;
if($j -ge 1){$newname=$folders[$i].Name+' ('+($j+1).toString()+')'+$ext;};
write-host ($list[$j]+' --> '+$newname);
};
};
}追问

运行了没有反应

没有生效

追答

按运行后窗口标题栏中的提示联系我

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-05-19
@echo off
for /f "tokens=*" %%i in ('dir/b/ad') do (
set n=0
for /f "tokens=*" %%j in ('dir/b/a-d/od "%%i\"') do (
set /a n+=1
move "%%i/%%j" "%%i/%%i!n!%%~xi"))追问

运行以后显示系统找不到指定路径

追答

批处理有个多个文件夹的那个文件夹里。

本回答被提问者采纳

bat批量修改命名,包括子文件夹里的文件?
rem 将多个子文件夹里的多个指定名称的文件分别重命名成不同的新名称 mode con lines=3000 set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0b4 title %#% +%$%%$%\/%@% %z cd \/d "%~dp0"for \/r \/d %%a in (*) do (pushd "%%a"for %%b in ("B6.jpg|A1.JPG""B5...

怎么用bat批量重命名文件夹名
1. **打开记事本或任何文本编辑器**:首先,你需要打开记事本(Notepad)或你选择的任何文本编辑器来编写BAT脚本。2. **编写BAT脚本**:在记事本中输入以下示例脚本,用于将指定目录下所有文件夹的名称前添加"Prefix_"前缀。请将`C:\\path\\to\\your\\folders`替换为你的目标文件夹路径。```batch ech...

Windows7系统用bat命令实现文件批量更名
方法\/步骤:1、首先在文件夹空白处右键,依次选择“排序方式”→“修改时间”,然后再选择“递增”顺序;2、接着按Ctrl+A选中文件夹里所有的图片,再按一下F2键,此时第一个文件名会变成可编辑状态,输入任意一个名称,回车确定后所有文件都会自动改成同一名称+数字序号的形式;3、如果有些朋友不喜欢...

求一个能批量识别并修改文件名的bat批处理。
echoofffor\/f"delims="%%ain('dir\/a-d\/b\/s')do(setstr=%%~nasetlocalenabledelayedexpansionset"pre=!str:~0,6!"ren"%%a""!pre!%%~xa"endlocal)用dir\/a-d\/b\/s显示所有子文件夹的文件名不就得了

批量需修改文件名称BAT脚本
保存文本文件为BAT格式。执行该文件即可批量修改指定路径下的文件名称。请注意,此操作将直接修改源文件名称,因此在执行前请确保备份原文件。示范操作如下:ren "C:\\Users\\86173\\Desktop\\CMM\\中文一.png" MC1.png ren "C:\\Users\\86173\\Desktop\\CMM\\中文二.png" MC2.png 通过上述示例,分别将“中文...

...一下以下bat命令,目标是把子文件夹里面的文件名字改成主文件夹的名 ...
::一定要把这个bat放在这一大堆子文件夹旁 echo 输入子文件夹要改成的名字 set \/p 文件夹名字= for \/f %%a in ('dir \/b \/ad') do (cd %%a&for %%b in ('dir \/b \/ad') do (ren %%a %文件夹名字%)&cd ..)大概就是这样可能符合了你的要求 ...

求bat处理命令:批量修改当前目录下所有子目录下的所有txt文件名
echo offfor \/f "delims=" %%a in ('dir \/s\/b\/a-d *.txt') do ( for \/f "tokens=2 delims=_" %%b in ("%%~na") do ren "%%a" "%%b.txt" )

BAT批处理脚本:怎样批量修改文件名?
那怎样批量修改扩展名呢?实际上只需要一行命令。在视频文件夹内新建一个文本文档,输入:ren *.mkv *.abcd,保存,然后将此文档扩展名.txt改成.bat,双击运行。改回来的话,就是:ren *.abcd *.mkv。于是ren命令的用法就很容易懂了:ren [Drive:][path] filename1 filename2。[Drive:][path...

bat批量替换部分文件名怎么做?
bat批量替换部分文件名的方法如下:操作环境:联想ThinkpadT14、Widows10、batv3.1.4。1、打开cmd命令,进入想要修改文件名的文件夹中。具体是:E:\>cd测试文件夹。2、继续通过cmd命令,新建一个excel文件,文件中包括所有待修改的文件名。具体是:E:\测试文件夹>dir\/b>test.xls。3、打开刚新建...

求一个bat,将不同文件夹内的子文件名字全部命名为和文件夹名一样
echo offsetlocal enabledelayedexpansion::设置新文件夹路径set ND=新建文件夹for \/r %%a in (*.xls) do ( set "Dir=%%~dpa" for %%b in ("!Dir:~,-1!") do set "DN=%%~nxb.xtmp" move "%%~a" "%ND%\\!DN!" >nul)ren "%ND%\\*.xtmp" "*.xls"pause ...

相似回答