⑴ 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