Board logo

标题: [文本处理] [已解决]请教批处理 将该文本的文件名 写入文本第三列 [打印本页]

作者: KLL    时间: 2022-1-12 07:02     标题: [已解决]请教批处理 将该文本的文件名 写入文本第三列

本帖最后由 KLL 于 2022-1-14 02:44 编辑

将该文本的文件名  写入文本第三列

文件名20220112.txt

原内容如下  分隔号逗号
1269,圣杯,136.00,137.50,136.00,137.00,2117
1271,晨晖生技,60.80,61.40,59.20,61.40,73040
1293,利统,39.05,39.55,38.10,38.50,60005

生成后

1269,圣杯,20220112,136.00,137.50,136.00,137.00,2117
1271,晨晖生技,20220112,60.80,61.40,59.20,61.40,73040
1293,利统,20220112,39.05,39.55,38.10,38.50,60005

谢谢先进
作者: 5i365    时间: 2022-1-12 09:06

本帖最后由 5i365 于 2022-1-12 09:08 编辑

前几天, 谷歌搜索解决csv的问题时, 看到有人用powershell 解决了类似的问题, 同时还认识了一个非常强大的组件, 刚刚自己试着改了一下代码, 没想到成功了! 供路过的朋友借鉴学习一下
组件下载地址如下: 下载后, 解压出ChilkatDotNet48.dll,和下面的代码放在同一文件夹就行
https://chilkatdownload.com/9.5. ... net48-9.5.0-x64.zip
  1. #&cls&@powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" &pause&exit
  2. Add-Type -Path ".\ChilkatDotNet48.dll"
  3. $csv = New-Object Chilkat.Csv
  4. $csv.HasColumnNames = $false
  5. $csv.LoadFile(".\test.csv")
  6. $col = 2
  7. $csv.InsertColumn($col)
  8. for ($i=0; $i -lt $csv.NumRows; $i++) {
  9. $csv.SetCell($i, $col, "20220112")
  10. }
  11. $csv.SaveFile(".\test_ok.csv")
复制代码

作者: for_flr    时间: 2022-1-12 10:29

  1. @echo off
  2. set file=20220112
  3. set newfile=new_20220112
  4. (for /f "tokens=1,2* delims=," %%a in (%file%) do (echo;%%a,%%b,%file%,%%c))>%newfile%
复制代码

作者: KLL    时间: 2022-1-13 03:38

抱歉,运行后,生成文件不是所需要的内容
劳请谢谢
作者: qixiaobin0715    时间: 2022-1-13 09:58

回复 4# KLL
自己还是要懂一点批处理的好:
3楼代码最后一行中“in (%file%) ....%newfile%”修改为“in (%file%.txt) ...%newfile%.txt”
作者: KLL    时间: 2022-1-14 02:42

是的  已运行OK
谢谢先进指导




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2