如何按照一定规则批量修改文件名?
我的文件夹里放着MP3和txt文件,他们都有编号和命名,我想让mp3文件名按顺序和txt文件名对应,我应该怎么做?...
我的文件夹里放着MP3和txt文件,他们都有编号和命名,我想让mp3文件名按顺序和txt文件名对应,我应该怎么做?
展开
3个回答
展开全部
不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行
<# :
cls
@echo off
rem 将当前目录里的多个mp3文件按原有顺序/排序分别以同目录里的多个txt文件名称一一对应重命名
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]::GetEncoding('GB2312')))) -Args '%~f0'"
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;
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
[byte[]]$b=@(32,45,45,62,32);
$c=[Text.Encoding]::Default.GetString($b);
$files1=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])}|%{$_.Name});
$files2=@(dir -liter $path|?{('.bat' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])}|%{$_.Name});
if(($files1.length -ge 1) -and ($files2.length -ge 1)){
$arr=[ExpDir]::Sort($files1);
$brr=[ExpDir]::Sort($files2);
for($i=0;$i -lt $brr.count;$i++){
if($i -lt $arr.count){
$f1=get-item -liter ($path+'\'+$brr[$i]);
$f2=get-item -liter ($path+'\'+$arr[$i]);
$f1.Name+$c+$f2.BaseName+$f1.Extension;
};
};
};
<# :
cls
@echo off
rem 将当前目录里的多个mp3文件按原有顺序/排序分别以同目录里的多个txt文件名称一一对应重命名
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]::GetEncoding('GB2312')))) -Args '%~f0'"
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;
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
[byte[]]$b=@(32,45,45,62,32);
$c=[Text.Encoding]::Default.GetString($b);
$files1=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])}|%{$_.Name});
$files2=@(dir -liter $path|?{('.bat' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])}|%{$_.Name});
if(($files1.length -ge 1) -and ($files2.length -ge 1)){
$arr=[ExpDir]::Sort($files1);
$brr=[ExpDir]::Sort($files2);
for($i=0;$i -lt $brr.count;$i++){
if($i -lt $arr.count){
$f1=get-item -liter ($path+'\'+$brr[$i]);
$f2=get-item -liter ($path+'\'+$arr[$i]);
$f1.Name+$c+$f2.BaseName+$f1.Extension;
};
};
};
追问
我运行了程序 显示
undefined - 1.mp3 --> 009【a】.txt
undefined - 2.mp3 --> 010【a】.txt
undefined - 3.mp3 --> 019【a】.txt
……
这样的画面,看结果应该是对的,但是mp3文件的名字没有变啊
这怎么办呢
追答
按运行代码后窗口标题栏中的提示联系我
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
windows10系统,怎样批量修改文件名?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |