标题: [文件操作] 请教大神!使用BAT如何批量去掉目录下所有文件夹中所有文件名中的括号和括号里的内容 [打印本页]
作者: Pathos 时间: 2020-6-17 16:27 标题: 请教大神!使用BAT如何批量去掉目录下所有文件夹中所有文件名中的括号和括号里的内容
请教各位大神!!!使用BAT如何批量去掉目录下所有文件夹中所有文件名中的括号和括号里的内容!!!
通过本站帖子学习到了如何去除文件夹里所有文件名中的括号及相关内容, 但是不知道如何对目录下所有文件夹中的文件进行操作。
以下帖子中的代码:
http://www.bathome.net/thread-55719-1-1.html
- @echo off
- for /f "tokens=1* delims=(" %%i in ('dir /b "*(*)*.txt"') do (
- if "%%j"=="" ( set "a=%%i" & set "pre=" ) else ( set "a=%%j" & set "pre=%%i" )
- call set "txt=%%pre%%(%%a%%"
- call set "a=%%a:*)=%%"
- call echo rename "%%txt%%" "%%pre%%%%a%%"
- call rename "%%txt%%" "%%pre%%%%a%%"
- echo -----
- )
- pause&exit
复制代码
作者: Pathos 时间: 2020-6-17 17:03
我修改了一下, 发现这样子在运行后点任意键,每点击一下就可以找到子文件夹里所有对应的MP4文件,但是程序并没有重命名- @echo off
- for /f "tokens=1* delims=(" %%i in ('dir /b /a-d /s "*(*)*.mp4"') do (
- if "%%j"=="" ( set "a=%%i" & set "pre=" ) else ( set "a=%%j" & set "pre=%%i" )
- call set "txt=%%pre%%(%%a%%"
- call set "a=%%a:*)=%%"
- call echo rename "%%txt%%" "%%pre%%%%a%%"
- call rename "%%txt%%" "%%pre%%%%a%%"
- echo -----
- )
- pause&exit
复制代码
作者: yhcfsr 时间: 2020-6-17 17:23
- @Powershell -version 3 -NoLogo -c "& {[ScriptBlock]::Create("'#' + ([io.file]::ReadAllText('%~f0',[text.encoding]::Default))").Invoke()}" & pause & exit
-
- $files = [io.directory]::GetFiles("./","*.mp4","All");
-
- foreach($file in $files)
- {
- $name = Split-Path -Path $file -Leaf;
- $new_name = $name -replace '\(.*\)','';
- Rename-Item -Path $file -NewName $new_name;
- }
复制代码
作者: Pathos 时间: 2020-6-17 17:29
回复 3# yhcfsr
这个可以哟!! 感谢大神指教。 还能用这种指令。 我再仔细看看代码
作者: went 时间: 2020-6-17 18:13
正则方便- //&cls&@ dir /s /b "*(*)*.mp4"| CScript -NoLogo -E:JScript "%~0" &pause&exit
- var fso=new ActiveXObject("Scripting.FileSystemObject");
- var file=null;
- var newName=null;
- while (!WScript.StdIn.AtEndOfStream){
- try{
- file=fso.GetFile(WScript.StdIn.ReadLine());
- newName=file.Name.replace(/\(.*?\)/g,"");
- WSH.Echo(file.Path+"\n"+newName);
- file.Name=newName;
- WSH.Echo("success!");
- }catch(e){
- WSH.Echo("failed:"+e.message);
- } finally {
- WSH.Echo("--------------------------------");
- }
- }
复制代码
作者: Batcher 时间: 2020-6-17 19:12
回复 1# Pathos
@echo off
for /f "delims=" %%x in ('dir /b /s /ad') do (
pushd "%%x"
for /f "tokens=1* delims=(" %%i in ('dir /b "*(*)*.txt"') do (
if "%%j"=="" ( set "a=%%i" & set "pre=" ) else ( set "a=%%j" & set "pre=%%i" )
call set "txt=%%pre%%(%%a%%"
call set "a=%%a:*)=%%"
call echo rename "%%txt%%" "%%pre%%%%a%%"
call rename "%%txt%%" "%%pre%%%%a%%"
echo -----
)
popd
)
作者: Pathos 时间: 2020-6-17 20:50
回复 5# went
学习到了学习到了! 我试试
作者: Pathos 时间: 2020-6-17 20:51
回复 6# Batcher
感谢感谢 我试一下
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |