⑴ dos(批处理)或VBS脚本批量修改CSV格式文件内容
1.备份源文件
2.此为powershell脚本,保存为ps1扩展名文件,右键单击脚本,以powershell运行
3.未对powershell进行过设置的,可以管理员身份运行CMD,复制以下命令到命令提符 以解除脚本限制
powershell-c"set-executionpolicyunrestricted"
当然也可以管理员运行POWERSHELL,输入以下命令解除脚本限制
set-executionpolicyunrestricted
4. WIN10以下系统如出错,可能需要去微软官网下载补丁升级powershell
$SrcDir="D: est";#源目录
$ar=2,6;#替换的列
dir$SrcDir-Filter*.csv|%{$str=$null;type$_.FullName|%{
$n=0;
foreach($chin$_.split(",`t")){
$n+=1;
if($n-in$ar){$ch=$ch.Replace('TER','端子')}
$str+=$ch+',';
}
$str=$str.TrimEnd(',')+"`r`n";
}
Out-File-FilePath$_.FullName-InputObject$str-Encodingutf8;
}
⑵ 通过vbs脚本或者bat脚本,实现获取文件名和文件大小等信息并输出到Excel文档
生成到EXCEL里的不会,但是可以生成CSV文件
自己建一个VBS文件,把下面的代码扔进去。
可以自己制定路径,生成C:\1.csv文件。
dim SF,sE,tF
dim fs,oF,sT
sub getFd(fd)
wrtf fd
for each tmpFd in fd.subfolders
getFd tmpFd
next
end sub
sub wrtF(fd)
for each tmpfile in fd.files
sE.write tmpfile.name & "," & tmpfile.size & vbcrlf
next
end sub
sF = InputBox("input your path")
set fs = CreateObject("Scripting.FileSystemObject")
set oF = fs.GetFolder(sF)
tF="C:\1.csv"
if fs.FileExists(tF) then
fs.DeleteFile tF
end if
set sE = fs.OpenTextFile (tF, 8, True)
sE.write "name,size" & vbcrlf
getFd oF
sE.close
msgbox "done!"
⑶ dos(批处理)或VBS脚本批量重命名及修改批量修改文件内容
写好了.
@echo off
for /f "tokens=1,2 delims=," %%i in ('type "1234.csv"') do (
(
(echo S/N:%%i)
(echo Writing MAC %%j)
(echo Write MAC ^(%%j^))
)>"%%i.txt"
)
pause
测试:
1234.csv(Excel保存的逗号分隔符文件)用记事本打开内容是:
8A18517507,002185EE0E39
8A12345678,001d92123456
8A12345679,001d92123457
运行结果:
文件:
8A12345678.txt
内容:
S/N:8A12345678
Writing MAC 001d92123456
Write MAC (001d92123456)
文件:
8A12345679.txt
内容:
S/N:8A12345679
Writing MAC 001d92123457
Write MAC (001d92123457)
文件:
8A18517507.txt
内容:
S/N:8A18517507
Writing MAC 002185EE0E39
Write MAC (002185EE0E39)
⑷ vbs对指定文件夹下的最新文件(csv格式)操作的代码
LogPath="D:123"
SetFSO=CreateObject("Scripting.FileSystemObject")
Dimdt,fn'定义两个变量用于在遍历时记录最新的创建时间和文件名
dt="1990-1-1"'设定一个时间初始值用于后续比较
IfFSO.FolderExists(LogPath)Then
SetFolder=FSO.GetFolder(LogPath)
ForEachFileInFolder.Files
IfLCase(Right(File.Name,3))="csv"Then'判断文件后缀
IfDateDiff("s",dt,File.DateCreated)>0Then'比较创建时间
'间隔时间以秒(s)为单位,返回两个时间间隔的秒数
'若dt>File.DateCreated,DateDiff返回负数
'若dt<File.DateCreated,则更新dt和fn
dt=File.DateCreated
fn=File.Name
EndIf
EndIf
Next
SetFolder=Nothing
Else
'若文件夹路径不存在,给出错误提示并退出脚本运行
MsgBox"Folder"&LogPath&"notfound!",vbExclamation
WScript.Quit
EndIf
'MsgBoxfn'显示创建时间最新的文件名(不含路径),调试时可放开注释
'至此,得到文件名,下面读文件并判断第1行第1列的值是否符合要求
ConstForReading=1
Setf=FSO.OpenTextFile(LogPath&""&fn,ForReading)
'MsgBoxf.ReadLine'显示第1行文本内容,调试时可放开注释
ret=Split(f.ReadLine)'默认是空格分隔,若是TAB分隔,split要加第二个参数vbTab
'MsgBoxret(0)'显示第1行第1列的值,调试时可放开注释
f.Close
Setf=Nothing
SetFSO=Nothing
Ifret(0)>1.55Andret(0)<10.85Then
MsgBox"对",vbInformation
Else
MsgBox"错",vbExclamation
EndIf
⑸ VBS怎么往CSV文件中写数据
csv叫“逗号分隔值”,顾名思义,用逗号来分隔每列的值,所以你要分列的话只要在每个字段后面加个逗号就可以了。
如38行,改成ts.writeline("Date,Material,Presure,Temperature")
41行也只要将分号改成逗号就行了。
⑹ vbs如何将当前目录下的所有csv文件里面的指定内容的整行提取然后分别另存为相同文件名的excel
问三个问题
1:文件夹内是否只含有CSV文件,无其他格式文件?
2:每个CSV文件行数是否固定,为多少?
3:每个CSV文件中是否仅有唯一的aa,bb,cc行?
⑺ 请教excel vbs宏高手,批处理问题,指定批量读取文件名的范围(循环) ,读不到某一个文件名就跳过操作并继续
'将循环修改为:
ForiCol=201001To201412
IfDir("D:银行"&iCol&".csv")<>""Then
Workbooks.OpenFilename:="D:银行"&iCol&".csv"
……
EndIf
NextiCol
⑻ 请教如何写VBS来处理csv文件
csv实际就是文本文件,按照文本文件读取即可
ConstForReading=1
DimobjFSO,objFile,strline
SetobjFSO=CreateObject("Scripting.FileSystemObject")
SetobjFile=objFSO.OpenTextFile("d:xxx.csv",ForReading)
DoUntilobjFile.AtEndOfStream
strline=objFile.readline
MsgBoxstrline'这里是显示一行内容而已,可以换成别的内容
Loop
objFile.close
Setfso=nothing