能否在帮我做一个批量处理同一个文件夹里任何后缀的文件名字前面加首汉字的拼音首字母的批处理。比如 大世界.zip 重命名成 D 大世界.zip 最好能在字母后面有空格!
您好,非常感谢您能向我发起问答求助。根据您的描述,那么截图中那个问题中代码答案,您只需把dir /ad/b改成dir /a-d/b即可。如果还要一个空格,那么把所有的!PY!%~1改成!PY! %~1即可(其实就是在!PY!和%~1之间加个空格)。
追问使用了更改后的批处理,bat后缀的被改了 其他格式的没有重命名。
echo 正在获取文字并添加中,请耐心等待。。。
for /f "delims=" %%a in ('dir /a-d/b') do (
call:GetInitials "%%~a"
set FD=1
)
if not defined FD (
不好意思,忘记脚本那个文件了。
call :Get.....那句上面加上一句
if /i not "%%~nxa"=="%~nx0" (
然后在set FD.....那句下面加上一个英文右括号)
温馨提示:答案为网友推荐,仅供参考
第1个回答 2022-01-22
不清楚你的实际文件/情况,仅以问题中的样例说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件或文件夹放一起双击运行
<# :cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 在当前目录里的文件的名称开头添加第一个中文/汉字的拼音首字母
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
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 -literal $args[0];$path=$self.Directory.FullName;
$b=[Convert]::FromBase64String("IC0tPiA=");
$c=[Text.Encoding]::Default.GetString($b);
$bs="sj#niynip+sj+sloot+moc#zanihc#slootssc++:ptth";
$arr=$bs.replace('#', '.').replace('+', '/').ToCharArray();
[Array]::Reverse($arr);$url=$arr -join '';
$web=New-Object System.Net.WebClient;
$web.Encoding=[Text.Encoding]::UTF8;
$html=$web.DownloadString($url);
$m1=[regex]::match($html, 'var pydic ?= ?"([^"]+)"');
if($m1.success){
$pydic=$m1.groups[1].value;
$files=@(dir -literal $path|?{($self.Name -ne $_.Name) -and ($_ -is [System.IO.FileInfo])});
for($i=0;$i -lt $files.length;$i++){
$m2=[regex]::match($files[$i].Name, '[\u4e00-\u9fa5]');
if($m2.Success){
$char=$m2.groups[0].value;
$n=$pydic.IndexOf($char);
if($n -ge 0){
$s=$pydic.Substring($n+1, 1);
$s=($s -replace '[āáǎà]','a') -replace '[ōóǒò]','o';
$s=($s -replace '[ēéěè]','e');
$files[$i].Name+$c+$s.ToUpper()+' '+$files[$i].Name;
}
}
}
}