[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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
复制代码

回复 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
复制代码

TOP

本帖最后由 娜美 于 2024-6-26 15:52 编辑

回复 2# aloha20200628


    试了一下拼音词库样品大概应该是26000多个字, 只得到8143行, 似乎掉了一些

TOP

回复 3# 娜美

如果漏失的是冷僻字,系因批处默认的简中编码(ansi=gb2312)字符集容量限制...

TOP

本帖最后由 hnfeng 于 2024-6-26 17:42 编辑
回复  aloha20200628


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



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

也可能是某些特殊的字导致的

TOP

本帖最后由 娜美 于 2024-6-26 17:53 编辑

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

TOP

回复 5# hnfeng


    应该是行长度的问题

TOP

回复 6# 娜美


    是递归深度的限制

TOP

回复  hnfeng


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



    对头
找到原因就好解决了,修正一下源文件即可一次性得到结果

TOP

回复 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
复制代码

TOP

回复 10# aloha20200628


    这次帅了 Thanks

TOP

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"
复制代码

TOP

返回列表