以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件和文件夹放一起双击运行
<# :
echo off&cls
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]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
[byte[]]$b=@(32,45,45,62,32);
$c=[Text.Encoding]::Default.GetString($b);
$arr=@(dir -liter $path|?{$_ -is [System.IO.DirectoryInfo]}|sort {$_.Name.length} -Descending);
$brr=@(dir -liter $path|?{($_.Name -ne $self.Name) -and ($_ -is [System.IO.FileInfo])});
for($i=0;$i -lt $brr.length;$i++){
for($j=0;$j -lt $arr.length;$j++){
if($brr[$i].BaseName.toLower().Contains($arr[$j].Name.toLower())){
$brr[$i].Name+$c+$arr[$j].Name;break;
};
};
}
<# :
echo off&cls
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]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
[byte[]]$b=@(32,45,45,62,32);
$c=[Text.Encoding]::Default.GetString($b);
$arr=@(dir -liter $path|?{$_ -is [System.IO.DirectoryInfo]}|sort {$_.Name.length} -Descending);
$brr=@(dir -liter $path|?{($_.Name -ne $self.Name) -and ($_ -is [System.IO.FileInfo])});
for($i=0;$i -lt $brr.length;$i++){
for($j=0;$j -lt $arr.length;$j++){
if($brr[$i].BaseName.toLower().Contains($arr[$j].Name.toLower())){
$brr[$i].Name+$c+$arr[$j].Name;break;
};
};
}