回复 1# zhangop9
代码以“----------”作为判断标准,所以不要告诉我这个是你为了表达而刻意添加的。。。- @echo off
- ::文件名:telconvert.bat
- ::用法:
- ::文本文件扩展名固定为.txt,表格文件扩展名固定为.xls
- ::1.文本转换为表格
- :: 在命令行下输入:telconvert.bat 文本文件名 表格文件名
- :: 如:telconvert.bat contact.txt contact.xls
- :: 也可直接将文本文件拖至bat文件上,此时将自动生成同名表格文件(仅扩展名不同)
- ::2.表格转换为文本
- :: 在命令行下输入:telconvert.bat 表格文件名 文本文件名
- :: 如:telconvert.bat contact.xls contact.txt
- :: 也可直接将表格文件拖至bat文件上,此时将自动生成同名文本文件(仅扩展名不同)
- setlocal enabledelayedexpansion
- set "tab= "
- if "%1"=="" (set/p source=请输入要转换的文件名:) else set "source=%1"
- if "%source:~-4%"==".txt" (set destex=.xls&set go=1) else (
- if "%source:~-4%"==".xls" (set destex=.txt&set go=2) else (
- echo,源文件格式不正确!&pause>nul&exit/b
- ))
- if "%2"=="" (set "dest=%~n1%destex%") else set "dest=%2"
- if not %dest:~-4%==%destex% echo,目标文件格式不正确!&pause>nul&exit/b
- goto convert%go%
- :convert1
- echo,正在转换,请稍后...
- set n=
- (for /f "usebackq skip=1 tokens=1* delims=:" %%a in ("%source%") do (
- if "%%a"=="----------" set/a n+=1
- if !n! equ 0 (set/p=%%a%tab%<nul) else goto :next1
- ))>%dest%
- :next1
- (for /f "usebackq tokens=1* delims=:" %%i in ("%source%") do (
- if not "%%i"=="----------" (set/p=%%j%tab%<nul) else echo,
- ))>>%dest%
- start "" "%dest%"
- goto :eof
- :convert2
- set/p head=<"%source%"
- set n=
- for %%a in (%head%) do set/a n+=1&set "head!n!=%%a"
- (for /f "usebackq skip=1 delims=" %%i in ("%source%") do (
- echo,----------
- set str="%%i"&set "str=!str:%tab%=" "!"&set m=
- for %%m in (!str!) do (
- set/a m+=1
- if !m! leq %n% for %%n in (!m!) do echo,!head%%n!:%%~m
- )
- ))>%dest%
- echo,---------->>"%dest%"
- start "" "%dest%"
复制代码
|