■前言

批量删除CSV文件第一行的表头,重新写入【新的标头】。

(即,删除第一行的内容后,重新写入新的内容)

■実現-----------------------------------------------------------------------------------------------------

@setlocal enabledelayedexpansion
@echo offset newFirstLineStr=%1
set newFirstLineStr2=%newFirstLineStr:""="%
set newFirstLineStr3=%newFirstLineStr2:"空值"=""%
set newFirstLineStr4=%newFirstLineStr3:kkk= %cd /d %~dp0set inputdir=c:\data\in
set outputdir=c:\data\outfor /f "delims=" %%i in ('dir /b /s %inputdir%\*.txt') do xcopy /Y %%i %outputdir%for /f "delims=" %%i in ('dir /b /s %outputdir%\*.txt') do (set flag=1for /f "delims=" %%j in ('type %%i') do (if !flag!==1 (set flag=0 & echo %newFirstLineStr4%>%%i) else echo %%j>>%%i)
)

■実現----------------------------------------------------------------------------------------------------- bug 修正前

(初版bat)VBA调用bat,传入参数(参数内容为西【新的标头】)

(即第一行替换为新的内容,其他行的内容保持不变。)

@setlocal enabledelayedexpansion
@echo offset newFirstLineStr=%1cd /d %~dp0set inputdir=c:\data\in
set outputdir=c:\data\outfor /f "delims=" %%i in ('dir /b /s %inputdir%\*.txt') do xcopy /Y %%i %outputdir%for /f "delims=" %%i in ('dir /b /s %outputdir%\*.txt') do (set flag=1for /f "delims=" %%j in ('type %%i') do (if !flag!==1 (set flag=0 & echo %newFirstLineStr:""="%>%%i) else echo %%j>>%%i)
)

※ 因为VBA传递进来的参数为 「""1","2","3""」多了一层双引号,所以 要把【连续的两个双引号】替换为【一个双引号】 %str:""="%

※ 【TODO→完了】 bug修正中 中间如果有空项目,“” 也会被替换为一个“ 例:""1","2","3","","5""

↑解决:

VBA代码中,生成字符串的时候,「""1","2","3","空值","5""」

BAT中替换两次

set newFirstLineStr2=%newFirstLineStr:""="%
set newFirstLineStr3=%newFirstLineStr2:"空值"=""%
。。。。set flag=0 & echo %newFirstLineStr3%>%%i

※ 注意:延期变量使用时,要使用!变量名!

※ 【TODO】 处理源的文件中,如果有换行,并且这个换行是Linux的换行。\n

那么复制后的文件,所有的换行都会变成windows的换行。\r\n

↑影响:处理源文件是CSV文件,CSV文件中,项目如果有行内换行(\n),转换后的CSV文件,再次作为数据投入时,和原有数据不一致。

 ↑【解决中。。。】https://bbs.csdn.net/topics/399145083

※ 【TODO→完了】 VBA侧传入的参数带有空格

↑解决:

VBA侧把空格替换成kkk

bat侧再把kkk替换为空格

set newFirstLineStr4=%newFirstLineStr3:kkk= %

VBA中

str = Replace(str, " ", "kkk")

■参考1

・为文件添加head,body

@echo off
for /f "delims=" %%i in ('type input.txt') do (
if not defined a (
echo head----------- >output.txt
set a=a & echo %%i>>output.txt
echo body----------- >> output.txt
) else echo %%i >>output.txt
) 

・效果

・input.txt
11aaa11
11aaa11
222bbb222
333ccc333
6666  ・执行bat
生成 output.txt
head-----------
11aaa11
body-----------
11aaa11
222bbb222
333ccc333
6666

■参考2

more /e +1 input.txt> input1.txt

■参考3------------------------------------------------------------------------------------------------------

VBA调用BAT

VBA调用bat,doc 命令行 窗口关闭之后,VBA代码 再继续执行_sun0322-CSDN博客

VBA读取文件名

https://www.cnblogs.com/medik/p/10165600.html

BAT相关代码

从当前文件夹以及子文件夹中,批量移动指定名字的文件_sun0322-CSDN博客

VBA处理文件框架代码 【第二部分:变量定义】_sun0322-CSDN博客_vba 框架

bat for 循环中定义变量(变量值不显示,通过使用「延期变量扩展」方式解决)_sun0322-CSDN博客

---

■扩展1

VBA读取指定目录下,任意一个文件,第一行的内容

Dim fileName As String
' 如果有文件,会取出排序第一的文件的名字。(只有文件名,没有目录信息)
fileName = Dir("c:\data\" & "*.csv")
If fileName ="" thenApplication.StautsBar = "File Not Found"Exit sub
end IfDim oldTitleStr
Open "c:\data\" & fileName For Input As #1
Do While Not EOF(1)Line Input #1, oldTitleStr‘ 只读取一行,即退出循环Exit Do
Loop
Close #1

参照

https://www.cnblogs.com/medik/p/10165600.html

■扩展2

获取数组的长度

Dim len As Integer
len = UBound(list) - LBound(list) + 1

--

使用bat向文件的第一行中写入内容相关推荐

  1. php注册登录遍写入 遍验证,在文件指定行中写入内容的php...-自动注册登录验证机制的php代...-php中出现Undefined index报错的修复方法_169IT.COM...

    在phpwind站点后台添加"广告管家"(CNZZ的一款广告投放的应用)的应用,整个"广告管家"通过iframe载入,载入的具体内容根据不同站点显示针对该站点的 ...

  2. java大文件首行追加,java中实现,在大文件的第一行添加内容

    需求描述: 最近在写一个定时任务,发送多次请求到接口,接口返回报文写入到一个文件中,文件要求格式第一行为总数.这个总数只能在最后的时候才能知道, 这就相当于提出了一个要求:在文件的第一行添加内容,以前 ...

  3. 一个将当前目录下HEX文件的第一行数据删除的程序...

    为什么要写这样一个函数 在使用SoftConsole开发M3程序时,生成的hex文件,必须要把第一行数据删除,才能在Libero中使用,所以写了这个小工具,这是2.0版本了,第一版是直接删除第一行数据 ...

  4. python文件开头第一行设置utf-8编码

    python文件开头第一行设置utf-8编码 若不添加,文件中涉及到中文,执行会报错如下: SyntaxError: Non-ASCII character '\xe5' in file /Users ...

  5. 输入在第一行中给出一个正整数n(1)。第二行输入n个整数,用空格分开。在一行中输出最大值及最大值的最小下标,中间用一个空格分开。

    本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始). 输入格式: 输入在第一行中给出一个正整数n(1).第二行输入n个整数,用空格分开. 输出格式: 在一行中输出最大值及最 ...

  6. python文件的第一行 #!/usr/bin/python3 是什么意思?

    python文件的第一行代码 通常在脚本语言的第一行会看到: #!/usr/bin/env python 或 #!/usr/bin/python 首先要确定的一点是它不是注释.这两句话的目的都是指出你 ...

  7. python把print写入文件_Python中用print方法向文件中写入内容

    Python中用print方法向文件中写入内容 2013-02-02| 一个小功能,我就是想用print功能实现,不想用write 1 2 3 4 5 6import os os.chdir(&quo ...

  8. 计算机内容的ppt,电脑打开ppt文件出错提示ppt中的内容有问题如何解决

    ‍ 今天在本文中主要介绍一下在电脑系统中打开ppt文件出错提示ppt中的内容有问题的解决方法.有个用户从网上下载了一些PPT,包括.ppt和.pptx两种版本文件,点击打开总是提示ppt的内容有问题. ...

  9. Java读取文件时第一行出现乱码“?”问号

    我们在使用Java在读取文件(txt.dat等)时,如果文件不是utf-8格式的话,读取结果会出现,中文字符变乱码的 情况,所以一般在读取时转为UTF-8格式读取. 但这时会出现一种情况,第一次读取第 ...

最新文章

  1. 适合新手练手,用Python爬取OPGG里英雄联盟英雄胜率及选取率,详细讲解加注释(建议收藏练手)
  2. Windows Server 2008技术概述(自CSDN)
  3. silverlight学习布局之:布局stackpanel
  4. ASP.NET MVC3书店--第九节 注册与下订单(第一部分)(转)
  5. OC画笔CGContextRef
  6. surf三维画图[matlab]
  7. eclipse 注释星号没对齐_36 个奇葩代码注释,看完笑哭了!
  8. Git完整入门教程(从0开始)
  9. CodeForces999E 双dfs // 标记覆盖 // tarjan缩点
  10. Dalvik虚拟机的运行过程分析
  11. Hihocoer 1336 - Matrix Sum 二维树状数组
  12. 给GridView设置行高
  13. 架构设计 —— 性能选型、高可用
  14. 前端笔试中两道与节点有关的算法题
  15. 以Epson 1600k 打印机为例解决使用SC登录虚拟机不能使用问题
  16. 学校计算机基础考试教学,计算机基础大一考试题 浅谈中等职业学校计算机基础课程教学设计原则...
  17. 大班科学电子计算机,计算器教案
  18. java观察者模式举例
  19. mac查看电脑系统位数
  20. RGB转CMY最简单的方法

热门文章

  1. python实现项目的复制_python实现复制大量文件功能
  2. VS2012下基于Glut OpenGL glDepthMask示例程序:
  3. VS2012下基于Glut OpenGL GL_QUAD_STRIP示例程序:
  4. Android系统联系人全特效实现(上),分组导航和挤压动画
  5. 跟屌丝大哥学DB2-第四课 数据类型 ,表 ,视图,索引,模式,约束(一)
  6. Android中Bundle和Intent的区别
  7. 事务是什么?事务的4个特点(ACID),事务的开启与结束
  8. SUSE Labs Con 2018有感
  9. mysql 8.0以上 新版本账号密码策略修改和密码修改
  10. 使用python写机器学习算法遇到的问题