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

[文本处理] 为什么批处理前1-9的数据不能正常显示,但是10以后可以呢?

[复制链接]
发表于 2025-9-24 19:29:16 | 显示全部楼层 |阅读模式
我有一个文本数据,如下(在程序后)。我想让每个数据最后的第三列数据另存为一个文件,而且文件名以提取的第二个内容来命名(例如,com1.txt, com2,txt)。在每个文件中,让每个数据以列的数据排列。我编写下面的程序:
  1. @echo off & chcp 65001 >nul

  2. for /f "tokens=1,2* delims=," %%a in (example.txt) do (
  3. (for %%i in (%%~c) do (
  4. echo %%i))>%%b.txt
  5. )
复制代码
但是上面的程序,仅仅转换出10以后得数据,但是1-9却不知为何转换不出来。有没有高手指点一下,哪里错了?

---example.txt包含的内容如下------------------
农产品,com1,"01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,290543,290544,3301,3501,3502,3503,3504,3505,38091,38246,4101,4102,4103,4301,5001,5002,5003,5101,5102,5103,5201,5202,5203,5301,5302"
肉类(包括杂碎),com2,"0201,0202,0203,0204,0205,0206,0207,02081,02082,02083,02085,02086,02087,02088,02089,0209,02101,02102,021091,021093,021099,0504"
水产品,com3,"02084,021092,03019,0302,0303,0304,0305,0306,0307,0308,0309,12122,1604,1605,2008993"
食用水产品,com4,"02084,021092,0301919,0301929,0301939,0301949,0301959,0301999,0302,0303,0304,0305,03061,0306319,0306329,0306339,0306349,0306359,0306369,0306399,03069,0307119,030712,030719,0307219,030722,030729,0307319,030732,030739,0307429,030743,030749,03075,0307609,0307719,030772,030779,0307819,0307829,030783,030784,030785,030786,030787,030788,0307919,030792,030799,0308119,030812,030819,0308219,030822,030829,03083019,0308309,03089012,03089019,0308909,0309,121221,1604,1605,2008993"
蔬菜及食用菌,com5,"0702,0703,0704,0705,0706,0707,0708,0709,07102,07103,07104,07105,07106,07107,07108,07109,0711,0712,07143,07144,07145,07146,07147,07148,07149,0714901,07149029,0714909,09101,2001,2002109,2002909,2003109,2003909,2004,20051,20052,20053,20054,2005519,2005599,2005609,20057,20058,2005919,2005994,2005995,2005996,2005997,20059999,2008995"
鲜或冷藏蔬菜,com6,"0702,0703,0704,0705,0706,0707,0708,0709,07143,07144,07145,07146,07147,07148,07149,0714901,07149029,0714909"
干鲜瓜果及坚果,com7,"080111,080112,0801199,08012,08013,080211,080212,080221,080222,080231,080232,080241,080242,080251,080252,0802619,080262,080290,080299,0803,0804,0805,0806,0807,0808,0809,0810,0812,0813"
苹果,com8,08081
茶叶,com9,0902
苹果,com10,08081
茶叶,com11,0902
发表于 2025-9-24 19:56:46 | 显示全部楼层
作为计算机小白,我也是第一次见,搜索了下,com是串口名称,不让用,换个名字吧。
发表于 2025-9-24 20:00:36 | 显示全部楼层
回复 1# delab-1

com1,com2,...,com9 是系统保留字,不能被占用。改用以下代码即可...

  1. @echo off &chcp 65001>nul
  2. for /f "tokens=1-2* delims=," %%a in (example.txt) do (echo,%%c>"_%%b.txt")
  3. pause&exit/b
复制代码
 楼主| 发表于 2025-9-24 21:35:06 | 显示全部楼层
太感谢了,随着用批处理越来越多,发现的问题也越来越多。太感谢了
发表于 2025-9-25 08:44:19 | 显示全部楼层
回复 1# delab-1
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "tokens=1,2* delims=," %%a in ('type "example.txt"') do (
  4.     (for %%i in (%%~c) do (
  5.         echo,%%i
  6.     ))>"out_%%b.txt"
  7. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:05 , Processed in 0.018531 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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