|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
『楼 主』:
[收集思路]把信息之间的n个空格替换为1个跳格
工作中得到一份电子料单,部分内容如下:
Quote: | 电阻 100K R0603 1
插脚电容 100uF/16V 6x3 2
电容 104 C0603 3
电容 105 C0603 1
贴片二三极管 2SN3904 SOT-23 3 |
|
其中,第一列为物料名称,第二列为规格,第三列为封装,第四列为数量。
但是它们之间是用n个空格区分的,实际料单很长,要导入excel表格并
按excel的方式分列(excle用跳格符作为分列的标记)的话,可能要一个个地
去空格,换tab,纯体力活啊~
感觉当成批处理题目做的话还蛮适合~ 我就当题目发了,顺便看看有哪些
好思路 :
假定上面给出的料单名为 list.txt
现要求用批处理对该料单进行整理,把数据之间的空格换成1个跳格符
并直接重定向生成结果文件: result.xls (没装excel的 生成【result.x】也行)
(跳格符发上来好像会变成连续空格吧,大家用文字表示好了,当然如果
有办法直接发的话,就教教我了。)
[ Last edited by 523066680 on 2009-10-7 at 16:38 ]
|
综合型编程论坛
我的作品索引 |
|
2009-10-7 16:28 |
|
|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
『第
2 楼』:
在bathome进程,seter已经给出了用
for tokens=1-3的办法,%%a跳格%%b跳格%%c 重定向出结果。
但是列数被确定了。
现题目升级,列数未知。
[ Last edited by 523066680 on 2009-10-7 at 18:01 ]
|
综合型编程论坛
我的作品索引 |
|
2009-10-7 17:07 |
|
|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
|
2009-10-7 18:54 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
4 楼』:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (list.txt) do (call :k "%%i"
>>result.x echo.!i!)
exit
:k
set i=%~1&set "i=!i: =#!"
:c
set "i=%i:##=#%"
for /f "delims=" %%i in ('echo %i% ^| find "##"') do goto c
set "i=%i:#= %"这里跳格 好象这个方法处理的太慢了
[ Last edited by Hanyeguxing on 2009-10-8 at 04:37 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2009-10-7 19:48 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
|
2009-10-7 20:57 |
|
|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
『第
6 楼』:
@echo off&setlocal enabledelayedexpansion
set "Tab= "这里跳格
(for /f "tokens=*" %%i in (list.txt) do (
set str=%%i
set str=!str: = %tab%!
set str=!str:%tab% =!
echo;!str: =!
))>result.x
pause
[ Last edited by netbenton on 2009-10-7 at 19:25 ]
|
精简
[你的+我的+他的]=>[大家的] 个人网志 |
|
2009-10-7 21:22 |
|
|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
『第
7 楼』:
谢谢各位,学习了^_^
[ Last edited by 523066680 on 2009-10-7 at 21:30 ]
|
综合型编程论坛
我的作品索引 |
|
2009-10-7 21:28 |
|
|
zh159
金牌会员
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第
8 楼』:
按 6 楼netbenton的方法,把TAB跳格改为“,”,输出>result.x改为>result.csv,就可以直接双击打开后进入分列好的excel列表,另存为电子表格文件
PS:前提是必须是正常安装的OFFICE
|
|
|
2009-10-7 23:09 |
|
|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
|
2009-10-8 10:47 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
10 楼』:
如果存在 空格空格
替换 空格空格 为 空格
重复
|
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore |
|
2009-10-8 12:18 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
2009-10-8 17:03 |
|
|
3742668
荣誉版主
积分 2013
发帖 718
注册 2006-2-18
状态 离线
|
『第
12 楼』:
如8L所说,转换为csv文件是可以直接用OFFICE打开的。
另外,利用Excel中的"数据","导入外部数据",然后选择要导入的文件,按照提示是可以被Excel识别的。
好久好久没来了,也来练练手(不涉及特殊字符,转换为逗号):
@echo off
for /f "delims=" %%i in (a.txt) do call :MySub %%i
pause
goto :eof
:MySub
set "str="
for %%j in (%*) do call set "str=%%str%%,%%j"
echo %str:~1%
goto :eof
|
|
2009-10-9 15:34 |
|
|
3742668
荣誉版主
积分 2013
发帖 718
注册 2006-2-18
状态 离线
|
|
2009-10-9 18:31 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
14 楼』:
WillSort,无奈何确实好几年没有出现过了
|
|
|
2009-10-9 19:17 |
|
|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
『第
15 楼』:
3742668
版主改成txt的附件嘛,可以直接打开看并复制,压缩包要解压的哦。
yes……终于有崇拜的前辈来回帖了。
下载附件了,压缩包也有压缩包的好~ 那就压缩包了。
[ Last edited by 523066680 on 2009-10-9 at 19:35 ]
|
综合型编程论坛
我的作品索引 |
|
2009-10-9 19:31 |
|