- 帖子
- 15
- 积分
- 30
- 技术
- 0
- 捐助
- 0
- 注册时间
- 2023-5-13
|
[文本处理] 再求批处理解决遇到--破折符号时,英文引号变为中文破折号。
本帖最后由 dzwind 于 2024-3-28 16:15 编辑
首先感谢前一段时间名叫"aloha20200628"的大师给写一段想要的语句,对于我的日常重复提供大量的帮助。
由于我没有看懂这位大师的写法,所以我想再添加语句,不知该如何下手。
再求加入把英文破折号改为中文破折号,比如将--改为中文——破折号。
@echo off &setlocal enabledelayedexpansion
set file=%1\*.txt
for /f "delims=" %%F in ('dir/s/b/a-d %file%') do (
set/a "pm=1,qm=1"
(for /f "usebackq delims=" %%a in ("%%~F") do (
set "s=%%a"&set "s=!s:......=……!"&set "_s=!s!"
set "t=%%a"&set "t=!t:--=——!"&set "_t=!t!" #这一句是我自己加的,但不起作用。
for %%n in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
if "!_s:~%%n,1!" neq "" (set/a "ls+=%%n"&set "_s=!_s:~%%n!")
)
for /L %%n in (1,1,!ls!) do for %%c in (" ", " ", " ") do if "%%~c"=="!s:~,1!" (
set "s=!s:~1!"&set/a "ls-=1")
for /L %%n in (0,1,!ls!) do (
set "c=!s:~%%n,1!" & if ^!c! == ^" (
set/a "pm=0-!pm!" &if !pm! equ -1 (set "c=“") else (set "c=”")
) else if "!c!" == "'" (set/a "qm=0-!qm!" &if !qm! equ -1 (set "c=‘") else (set "c=’"))
set "_line=!_line!!c!"
)
echo,!_line!&set "_line="&set "ls=0"
))>"%%~F%date%.txt"
del "%%~F"
)
endlocal&exit/b
求大师帮助。谢谢 |
|