本帖最后由 gao_leyun_km 于 2020-5-12 17:44 编辑
纯批,转换将删除所有空行和所有行首鸣声符(一般不会存在),支持含有特殊字符的文件。
(也可以在第一个for循环中加上findstr命令改造成可以转换空行的脚本,但如果被转换文件行首有冒号就会被删除)
下面的BAT要保存为ANSI编码。- @echo off
- :Load
- if exist "%~1" goto Read
- cls&echo 未指定或指定的源文件不存在。请拖拽文件入内并按下回车键,或以文件完整路径为第一个参数(%%1)重新运行本批处理。
- set /p S=
- call :Load "%S:"=%"
- :Read
- set F="%~dp1%~n1_ANSI%~x1"
- if exist %F% del %F%
- set I=原始文件:"%~1"&set O=目标文件:%F%&set T0=# 注意:&set T1=# 转换过程中不会更改原始文件。&set T2=# 输出文件中将删除所有并在末尾创建一空白行。&set T3=# 每行开头的鸣声符(如果存在的话)将被删除。&set T4=# 不能识别的字符将输出问号。&set W=# 请稍等。
- >nul chcp 65001
- set Str=Str_%date:~3%_%time: =0%
- for /f "usebackq delims=" %%i in ("%~1") do >nul set %Str%=%%i&call :Convert
- start notepad.exe %F%
- ping 127.1 -n 1 >nul
- exit
- :Convert
- if not defined N >nul chcp 936&echo %I%&echo %O%&echo;&echo %T0%&echo;&echo %T1%&echo %T2%&echo %T3%&echo %T4%&echo;&<nul set /p =%W%&set N=1
- for /f "tokens=1* delims=" %%j in ('set %Str%') do >>%F% echo;%%k
- goto :eof
复制代码
|