我创建了两个批处理文件:
1:
dir *.txt %t *.* /w/a/b/-p/o:gen | find "/">rezultate.csv
它从目录中获取所有文本文件的路径和大小以及日期和创建时间,并将结果导出为CSV文件。
2:
@echo off
setlocal EnableDelayedExpansion
if exist results.csv del results.csv
for %%f in (D:\script\*.txt) do (
set i=0
for /F "tokens=2 delims=:" %%l in (%%f) do (
set /A i+=1
set line!i!=%%l
)
echo %%f, !line1!, !line2!,>> D:\script\results.csv
)
它从指定目录获取文件路径以及文件在前2行(也包括文本文件)中包含的内容,并将结果导出为CSV文件。
我尝试组合批处理文件,并设法将两个批处理文件的结果导出到同一个CSV文件中,但第一批文件的输出导出前5行,第二批文件的输出是在接下来的5行中导出。
我想合并批处理文件,以便可以从第一个批处理文件中导出输出,该文件将有一列和5行,并且在同一个CSV中导出第二个批处理文件的输出,该文件有3列但是不在第一批的出口下。我希望CSV仍有5行而是4列。 我还尝试将CSV文件与另一个批处理文件合并,但我得到了相同的结果。
请尽可能帮助解决方案,因为我寻找的解决方案超过一周......
以下是我需要CSV文件的方式:
最终结果必须是这样的:
感谢您的帮助@ dohaqatar7。
以下是我今天达到的结果。 关于我想合并CSV文件的方式你是对的。
1:
我为你写了第1部分的剧本,因为它更加精确,我改变了一点,它会是这样的:
@echo off
for %%a in (*.txt) do echo %%~ta,%%~za>>results.csv
示例输出
2:
我会继续使用我的脚本,因为它会准确地返回我想要的内容并且它是准确的。
@echo off
setlocal EnableDelayedExpansion
for %%f in (D:\script\*.txt) do (
set i=0
for /F "tokens=2 delims=:" %%l in (%%f) do (
set /A i+=1
set line!i!=%%l
)
echo %%f, !line1!, !line2!,>>D:\script\results.csv
)
示例输出
您的样本也包含最终结果。
至于为合并CSV文件而提供的脚本,我无法使其工作,因为它不会在新的CSV文件中返回输出。请你稍微更改它以便我可以使用它。我希望我现在解释得更好。我会提供更多细节,但我是新来的,我的声誉有限。
如果您可以插入“D:\ scrip \ filename \”的路径,那会很棒,但我可以自己做。
亲切的问候,
答案 0 :(得分:0)
首先,我不知道您的第一段代码是否符合您的要求。当我运行它时,文件始终为空。此代码执行您声称的第一部分。
@echo off
for %%a in (*.txt) do echo %%~ta,%%~za,%%~fa
如果您的代码适合您,请继续使用它。如果你开始遇到问题,这段代码就可以了。
至于组合CSV文件,我有点不确定你想要什么。这就是我的假设。
您想要a.csv
a1,b1,c1
a2,b2,c2
和b.csv
d1
d2
并将它们合并到ab.csv
a1,b1,c1,d1
a2,b2,c2,d2
此代码将采用两个参数,即要合并的文件,并将结果输出到新文件。
@echo off
setlocal enabledelayedexpansion
set "line1=0"
for /f "tokens=*" %%a in (%1) do (
set "file1[!line1!]=%%a"
set /a line1+=1
)
set "line2=0"
for /f "tokens=*" %%a in (%2) do (
set "file2[!line2!]=%%a"
set /a line2+=1
)
if !line1! GTR !line2! (
set /a max=!line1!-1
) else (
set /a max=!line2!-1
)
set "mergedCSV=%~n1_%~n2.csv"
echo.>%mergedCSV%
for /l %%a in (0,1,%max%) do (
if "!file1[%%a]!"=="" (
echo !file2[%%a]! >> %mergedCSV%
) else (
if "!file2[%%a]!"=="" (
echo !file1[%%a]! >> %mergedCSV%
) else (
echo !file1[%%a]!,!file2[%%a]! >> %mergedCSV%
)
)
)
答案 1 :(得分:0)
Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout
On Error Resume Next
Set Fso = CreateObject("Scripting.FileSystemObject")
Set File = Fso.OpenTextFile(Arg(1), 1, false)
If err.number <> 0 then
Outp.WriteLine "Error: " & err.number & " " & err.description & " from " & err.source
err.clear
wscript.exit
End If
Do Until Inp.AtEndOfStream And File.AtEndOfStream
Line = ""
Line2 = ""
Line=Inp.readline
Line2=File.readline
outp.writeline Line & "," & Line2
Loop
在屏幕上使用
cscript //nologo <"path to script.vbs"> "" "c:\file1.txt" < "c:\file2.txt"
放入文件
cscript //nologo <"path to script.vbs"> "" "c:\file1.txt" < "c:\file2.txt" > "file3.txt"