标题: [文本处理] 请问批处理如何更改所有子文件夹内的指定文件名? [打印本页]
作者: ccnyst 时间: 2019-7-26 08:24 标题: 请问批处理如何更改所有子文件夹内的指定文件名?
我现在有一个文件夹,里面有多个名字不重复的子文件夹,子文件夹下还有子文件夹,里面才是文件。
正常的批处理需要每个文件夹单独更名,我想求问如何删除所有子文件夹下含有的所有指定字符。
如下图中的:来阁设计整理出品-工业 (1).jpg 最终修改成 工业 (1).jpg,删除内容为“来阁设计整理出品-”。
并且如果可以,不筛选文件夹或文件,只要是指定字符都删除。
提前谢谢各位大佬了
作者: WHY 时间: 2019-7-26 10:36
你是要修改文件夹名称,还是要修改文件名称?
指定字符指的是短横杠"-"前面的字符串吗?如果名称中出现多个短横杠你打算如何处理?
作者: zaqmlp 时间: 2019-7-26 12:09
- @echo off
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- set "rootpath=%~dp0"
- cd /d "%rootpath%"
- set "删除字符=来阁设计整理出品-"
- powershell -NoProfile -ExecutionPolicy bypass ^
- $list=@(dir -liter '%rootpath%' -r^|?{$_.Name -ne '%~nx0'}^|sort {$_.FullName.length} -des);^
- for($i=0;$i -lt $list.count;$i++){^
- $newname=$list[$i].Name.replace('%删除字符%','');^
- if($newname -ne $list[$i].Name){^
- $newpath=($list[$i].FullName -replace '[^^\\]+$','')+$newname;^
- write-host ($list[$i].FullName+' --^> '+$newname);^
- mv -liter $list[$i].FullName $newpath;^
- };^
- };
- echo;%info%
- pause
复制代码
作者: ccnyst 时间: 2019-7-29 13:36
回复 2# WHY
引号内的为需要去掉的文件名,包括横杠,里面没有多个横杠的命名方式
作者: ccnyst 时间: 2019-8-1 21:38
回复 3# zaqmlp
运行错误
作者: flashercs 时间: 2019-8-2 22:00
本帖最后由 flashercs 于 2019-8-2 22:02 编辑
- @echo off
- REM 功能:以%dri%为根目录,删除深度大于%depth%的目录中的文件名和文件夹名中字符串%str2replace%
- REM 要处理的目录深度是大于%depth%,根目录深度是0,依次递增。
- REM depth : 要操作的目录深度必须大于 depth
- set "depth=0"
- REM 根目录,默认是脚本所在目录
- set "dir=%~1"
- REM 文件或目录名中需要删除的字符串
- set "str2replace=来阁设计整理出品-"
- if not defined dir set "dir=%~dp0"
- call :recurse "%dir%" 0
- pause
- exit /b
- :recurse
- setlocal
- pushd %1||goto end
- set /a "childdepth=%2+1"
- REM 处理当前目录的文件夹,centerorder
- for /f "delims=" %%A in ('"2>nul,dir /ad /b"') do (
- call :recurse "%%A" %childdepth%
- if %2 gtr %depth% (
- echo Directory: "%%~fA"
- set "fsoname=%%A"
- call ren "%%A" "%%fsoname:%str2replace%=%%"
- )
- )
- if %2 leq %depth% goto out
- REM 处理当前目录的文件,postorder
- for /f "delims=" %%B in ('"2>nul,where ".:*%str2replace%*""') do (
- echo File: "%%B"
- set "fsoname=%%~nxB"
- call ren "%%fsoname%%" "%%fsoname:%str2replace%=%%"
- )
-
- :out
- popd
- :end
- endlocal
- exit /b
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |