...做一个批量在文件夹名字前面加首汉字的拼音首字母的批处理

发布网友 发布时间: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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com