找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 8528|回复: 11

[文本处理] 批处理怎样把拼音词库横排变竖排?

[复制链接]
发表于 2024-6-26 13:24:53 | 显示全部楼层 |阅读模式
https://wwm.lanzoul.com/iikZW22s1ryf
这是拼音词库,希望可以横排变成竖排。

在每一个字后面标上它对应拼音。Thanks哦
例:
  1. a        啊阿
  2. cen        参參叄
  3. ceng        蹭层層曽曾
复制代码
处理后横排变竖排样式

  1. 啊 a
  2. 阿 a

  3. 参 cen
  4. 參 cen
  5. 叄 cen

  6. 蹭 ceng
  7. 层 ceng
  8. 層 ceng
  9. 曽 ceng
  10. 曾 ceng
复制代码
发表于 2024-6-26 15:25:51 | 显示全部楼层
回复 1# 娜美

  1. @echo off &setlocal enabledelayedexpansion
  2. for /f "usebackq tokens=1-2 delims=         " %%a in ("拼音词库.txt") do (call :h2v "%%b" "%%a")
  3. endlocal&pause&exit/b
  4. :h2v
  5.         if "%~1"=="" (exit/b) else (set "s=%~1")
  6.         (echo,!s:~,1! %~2) & (call :h2v "!s:~1!" %2)
  7.         exit/b
复制代码
 楼主| 发表于 2024-6-26 15:48:17 | 显示全部楼层
本帖最后由 娜美 于 2024-6-26 15:52 编辑

回复 2# aloha20200628


    试了一下拼音词库样品大概应该是26000多个字, 只得到8143行, 似乎掉了一些
发表于 2024-6-26 16:32:20 | 显示全部楼层
回复 3# 娜美

如果漏失的是冷僻字,系因批处默认的简中编码(ansi=gb2312)字符集容量限制...
发表于 2024-6-26 17:37:47 | 显示全部楼层
本帖最后由 hnfeng 于 2024-6-26 17:42 编辑
回复  aloha20200628


    试了一下拼音词库样品大概应该是26000多个字, 只得到8143行, 似乎掉了一些
娜美 发表于 2024-6-26 15:48



    你把拼音库先分段后再试试

也可能是某些特殊的字导致的
 楼主| 发表于 2024-6-26 17:52:02 | 显示全部楼层
本帖最后由 娜美 于 2024-6-26 17:53 编辑

回复 4# aloha20200628
似乎不是编码问题,  似乎是行长度问题,  找了一行最长的,  似乎超过307字节丢失
  1. yi        仡唈嶧抑椅湙瘗羛藙詣迻阤鷊一乁乂义乙亄亦亿以仪伇伊伿佁佗佚佾侇依俋倚偯儀億兿冝凒凧刈劓劮勚勩匇匜医台吚呓呭呹咦咿嗌噫囈圛圪圯坄垼埶埸墿壱壹夁夞夷奕姨媐嫕嫛嬄嬑嬟宐宜宧寱寲射尾屹峄峓崺嶬嶷已巸帟帠幆庡廙异弈弋弌弬彛彜彝彞役忆忔怈怡怿恞悒悘悥意憶懌懿扅扆扡抴拸挹捙掖掜揖撎攲攺敡敼斁施旑旖易昱昳晲晹暆曀曎曳杙杝枍枱枻柂栘栧桋棭椬椸榏槷槸檍檥檹欭欹歋歝殔殪殹毅毉汉汽沂沶治泄泆泽洂洟洢洫浂浥浳液渏渫溢溰漪潩澤澺瀷炈焈焉焱焲熙熠熤熪熼燚燡燱犄狋猗獈玴珆瑿瓵畩異疑疙疫痍痬瘞瘱癔益眙眤眱睪瞖矣硪礒祎禕秇移稦穓竩笖篒簃籎紲絏維綺緆縊繄繶繹绁绎缢羠羡羨義羿翊翌翳翼耴肄肊肔胣胰腋膉臆臺舣艗艤艺艾芅芸苅苐苡苢荑萓萟蓺薏藝蘙虉虒虵蚁蛇蛜蛡蛦蛾蜴螔螘螠蟻衣衤衪衵袂袘袣袲裔裛裿褹襼觺訑訲訳詍詒誃誒誼謚謻譩譯議讉讛议译诒诣谊豙豛豷貖貤貽賹贀贻跇跠踦軼輢轙轶辷迆迤迱陁陭隶隿雉霬靾鞥頉頤頥顊顗顡颐食飴餏饐饴饻駅驛驿骮鮧鮨鯣鳦鴺鶂鶃鶍鶎鷁鷖鷧鷾鸃鹝鹢鹥黓黝黟黳齮齸逘逸遗遺邑郼鄓酏醫醳醷释釋釔釴鈘鈠鈶鉇鉈鉯銕銥銯錡鎰鏔鐿钇铱锜镒镱阝阣
复制代码
 楼主| 发表于 2024-6-26 17:52:44 | 显示全部楼层
回复 5# hnfeng


    应该是行长度的问题
发表于 2024-6-26 18:06:59 | 显示全部楼层
回复 6# 娜美


    是递归深度的限制
发表于 2024-6-26 18:18:56 | 显示全部楼层
回复  hnfeng


    应该是行长度的问题
娜美 发表于 2024-6-26 17:52



    对头
找到原因就好解决了,修正一下源文件即可一次性得到结果
发表于 2024-6-26 18:50:08 | 显示全部楼层
回复 3# 娜美

改为goto句式,再试试吧...

  1. @echo off &setlocal enabledelayedexpansion
  2. for /f "usebackq tokens=1-2 delims=         " %%a in ("拼音词库.txt") do (set "s=%%b"&set "p=%%a"&call :h2v)
  3. endlocal&pause&exit/b
  4. :h2v
  5.         if "!s!"=="" (exit/b)
  6.         (echo,!s:~,1! !p!)&set "s=!s:~1!"&(goto :h2v)
  7.         exit/b
复制代码
 楼主| 发表于 2024-6-26 20:11:27 | 显示全部楼层
回复 10# aloha20200628


    这次帅了 Thanks
发表于 2024-6-27 21:45:20 | 显示全部楼层
powershell 简单

  1. $file = Get-Content -Path "in.txt"

  2. $file | ForEach-Object {
  3.         $arr = $_ -split "`t"
  4.         $arr[1].ToCharArray() | ForEach-Object { $_ + " " + $arr[0] }
  5. } | out-file -Encoding "UTF8" -Path "out.txt"

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 22:19 , Processed in 0.020868 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表