...做一个批量在文件夹名字前面加首汉字的拼音首字母的批处理
发布网友
发布时间:2024-10-23 18:03
我来回答
共2个回答
热心网友
时间:2024-10-24 17:43
@echo off & Title 添加首字母 By 依梦琴瑶
::以下代码请勿随意更改,以免运行出错。
setlocal enabledelayedexpansion
mode 65,10 & color 0a & cd /d %~dp0
set "PY_Data=Initials.dat"
if not exist "%PY_Data%" (
color 0c & mode 65,8
echo 当前目录下缺少 %PY_Data% 汉字首字母对照表数据库,请前往以下站点下载:
set "wA=ht"&set "wB=tps"&set "wC=://"&set "wD=pan"&set "wE=bai"
set "wF=du"&set "wG=com"&set "wH=/s/"&set "wI=11GbgbMUfDfX7V5V-6AOwIA"
echo, & echo !wA!!wB!!wC!!wD!.!wE!!wF!.!wG!!wH!!wI!
echo, & echo 提取码 46sw
ping 127.0.0.1 -n "6">nul
start "" "!wA!!wB!!wC!!wD!.!wE!!wF!.!wG!!wH!!wI!"
exit
)
echo 正在获取文字并添加中,请耐心等待。。。
for /f "delims=" %%a in ('dir /ad/b') do (
call:GetInitials "%%~a"
set FD=1
)
if not defined FD (
cls & echo 当前目录中不存在子目录
goto End
)
echo, & echo 此次首字母添加完毕,请按任意建退出。
:End
pause>nul
call :ToMe
exit
:GetInitials
set "Str=%~1" & set "DY=0"
echo !Str:~,1!
pause
echo !Str:~,1!|findstr /i "[A-Z]" >nul 2>nul && (
echo 【%Str%】 -- 跳过
goto :eof
)
for /f "tokens=1 delims==" %%b in ('findstr "!Str:~,1!" "%PY_Data%"') do (
set /a DY+=1
set "PY!DY!=%%~b"
)
if !DY! gtr 1 (
echo, & echo 【!Str:~,1!】是一个多音字,请手动选择它在【%Str%】中合适的拼音首字母:& echo,
for /l %%c in (1,1,!DY!) do (
echo %%c、!PY%%c!
)
echo, & set /p xz=请输入对应编号后回车确认:
call set "PY=%%PY!xz!%%"
) else (
if !DY! equ 0 (
echo, & echo 【!Str:~,1!】未被记录到【%PY_Data%】对照表数据库中。
echo 您可自行用记事本打开【%PY_Data%】,并补全数据库。& echo,
ping 127.0.0.1 -n "5">nul
) else (
set "PY=!PY1!"
)
)
if exist "!PY!%~1" (
echo 【%Str%】 -- 存在已添加首字母的同名文件夹【!PY!%~1】
goto :eof
)
echo 【%Str%】 --^> 【!PY!%~1】
ren "%~1" "!PY!%~1"
goto :eof
:ToMe
set "S=.:ailnhpst/fPdv"
start "" "%S:~6,1%%S:~9,1%%S:~9,1%%S:~7,1%%S:~1,1%%S:~10,1%%S:~10,1%%S:~8,1%%S:~3,1%%S:~5,1%%S:~2,1%%S:~0,1%%S:~4,1%%S:~9,1%%S:~10,5%"
exit
热心网友
时间:2024-10-24 17:44
复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起运行
@echo off
rem 文件夹名称开头添加首个中文/汉字的拼音首字母
set #=Any question&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$% %z%
cd /d "%~dp0"
set a=/.:&set b=http&set c=com
set d=%b%%a:~2,1%%a:~,1%%a:~,1%csstools%a:~1,1%chinaz
set e=%a:~1,1%%c%%a:~,1%tools%a:~,1%js%a:~,1%pinyin%a:~1,1%js
powershell -NoProfile -ExecutionPolicy bypass ^
$web=New-Object System.Net.WebClient;^
$web.Encoding=[Text.Encoding]::UTF8;^
$html=$web.DownloadString('%d%%e%');^
$m=[regex]::match($html, 'var pydic ?= ?\""([^^\""]+)\""');^
if($m.success){^
$pydic=$m.groups[1].value;^
$folders=@(dir^|?{$_ -is [System.IO.DirectoryInfo]});^
for($i=0;$i -lt $folders.length;$i++){^
$s='';$newname='';^
$c=$folders[$i].Name[0].toString();^
$n=$pydic.indexOf($c);^
if($c -match '[\u4e00-\u9fa5]'){^
if($n -ge 0){^
$s=$pydic.Substring($n+1,1);^
$s=($s -replace '[āáǎà]','a') -replace '[ōóǒò]','o';^
$s=($s -replace '[ēéěè]','e');^
};^
};^
$newname=$s.toUpper()+$folders[$i].Name;^
write-host ($folders[$i].Name+' --^> '+$newname);^
if($folders[$i].Name -ne $newname){mv -liter $folders[$i].FullName ($folders[$i].Parent.FullName+'\'+$newname);};^
};^
};
:end
echo;%#% +%$%%$% %z%
pause