找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 37933|回复: 8

[文本处理] 【已解决】如何用批处理将特定文字内容分两列写入excel文件?

[复制链接]
发表于 2013-8-28 01:59:55 | 显示全部楼层 |阅读模式
本帖最后由 Lumiere 于 2013-8-28 23:24 编辑

我有一个文本,内容很有规律,写在一个名为1.txt的文本文件中,内容如下:
……………………………………
……………………………………
耔晶取向 seed orientation
籽晶生长 seeded growth
均质核化 homogeneous nucleation
异质核化 heterogeneous nucleation
均匀化热处理 homogenization heat treatment
……………………………………
……………………………………
……………………………………

基本都是这样的专业术语,如果我想用批处理把他们分成两列对应写入一个名为1.xlsx的excel文件的话,纯批处理能做到吗?不能的话应该借助什么其他脚本呢?如果可能,请在其他脚本的代码处给出相应的注释,谢谢!

评分

参与人数 1PB +2 收起 理由
tmplinshi + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-8-28 11:09:52 | 显示全部楼层
  1. @echo off
  2. (for /f "tokens=1*" %%i in (1.txt) do (
  3.     echo %%i,%%j
  4. ))>1.csv
复制代码

评分

参与人数 1技术 +1 收起 理由
Lumiere + 1 感谢你,能完美实现。

查看全部评分

 楼主| 发表于 2013-8-28 12:04:51 | 显示全部楼层
回复 2# Batcher


    我想再问下,如果两列之间没有空格,就是英文和中文直接链接在一起的,比如从“中文english”这样的格式,怎么能方便的用代码实现分离,并且做成那样的excel文件?有没有简单的命令能区分中文和英文字符然后把字符串截断的命令?
发表于 2013-8-28 15:01:09 | 显示全部楼层
本帖最后由 tmplinshi 于 2013-8-28 15:02 编辑

回复 3# Lumiere
  1. @echo off
  2. call :txt2csv "1.txt" >1.csv
  3. exit /b

  4. :txt2csv <InputFile>
  5.         SetLocal EnableDelayedExpansion
  6.        
  7.         for /f "usebackq tokens=*" %%i in ("%~1") do (
  8.                 set str_full=%%i
  9.                 for /f "delims=abcdefghijklmnopqrstuvwxyz" %%a in ("%%i") do (
  10.                         echo %%~nxa,!str_full:*%%a=!
  11.                 )
  12.         )
  13.        
  14.         EndLocal
  15. goto :eof
复制代码

评分

参与人数 1技术 +1 收起 理由
Lumiere + 1 乐于助人

查看全部评分

 楼主| 发表于 2013-8-28 20:29:31 | 显示全部楼层
回复 4# tmplinshi


经测试完美运行,非常感谢。代码基本都懂,但是还有三个点需要帮忙解疑:
1. csv文件是excel类型文件,为什么能用批处理写入内容形成这种文件却不能写成xlsx文件?
2. 为什么在两部分内容之间加入逗号“,”就可以实现将两部分写在同一行相邻的两个单元格?可以用其他的字符代替么?
3. for结构里最后一条为什么是%%~nxa,这个不是扩展成一个文件名和扩展名的意思吗?不是直接用%%a就可以了吗?
发表于 2013-8-28 20:46:39 | 显示全部楼层
回复 5# Lumiere

1. csv文件是excel类型文件,为什么能用批处理写入内容形成这种文件却不能写成xlsx文件?

因为批处理只能输出纯文本,而 xlsx 其实是 zip 压缩文件。

2. 为什么在两部分内容之间加入逗号“,”就可以实现将两部分写在同一行相邻的两个单元格?可以用其他的字符代替么?

因为 csv 的格式就是这样——用逗号分隔。可以用 Tab 符号代替,但是文件格式要保存为 UTF-16 LE。

3. for结构里最后一条为什么是%%~nxa,这个不是扩展成一个文件名和扩展名的意思吗?不是直接用%%a就可以了吗?

%%~nxa 可以去掉末尾的空格

评分

参与人数 1技术 +1 收起 理由
Lumiere + 1 乐于助人

查看全部评分

 楼主| 发表于 2013-8-28 21:35:46 | 显示全部楼层
回复 6# tmplinshi


    谢谢耐心的回复,这个%%~nxa既然说扩展为文件名和扩展名,这个不是跟文件相关的概念么,怎么用在字符串上了,是巧用吗?还有其他的用途么?我先把帖子结了。
发表于 2013-8-28 21:41:51 | 显示全部楼层
是的,巧用。
 楼主| 发表于 2013-8-28 23:25:21 | 显示全部楼层
回复 8# tmplinshi

谢谢,无疑问了,多谢解答,结贴了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 13:22 , Processed in 0.020834 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表