将特定目录中的所有文件转换为xml(批处理)

时间:2014-05-19 14:54:31

标签: xml batch-file powershell

我想将特定目录中的所有pcap文件转换为同一目录中的xml。

e.g:

  • aaa.pcap - > aaa.xml
  • bbb.pcap - > bbb.xml

我想这样做:

tshark -r aaa.pcap -T psml > bbb.xml

如果我再次执行批处理文件,它应该只转换新的pcap文件。 e.g。

  • NOT aaa.pcap - > aaa.xml
  • 只有ccc.pcap - > ccc.xml

有人可以帮我这么做吗? 替代方案:Powershell

2 个答案:

答案 0 :(得分:1)

试试这个:

Get-ChildItem *.pcap | Where {!(Test-Path "$($_.BaseName).xml")} | 
    Foreach {tshark -r $_.FullName -T psml > "$($_.BaseName).xml"}

或简称:

ls *.pcap | ?{!(Test-Path "$($_.BaseName).xml")} | %{tshark -r $_.FullName -T psml > "$($_.BaseName).xml"}

答案 1 :(得分:1)

以下一个衬垫将在命令行上运行,没有任何批处理文件。

for %F in (*.pcap) do if not exist "%~dpnF.xml" tshark -r "%F" -T psml >"%~dpnF.xml"

如果要将命令放在批处理文件中,则必须将百分比加倍

for %%F in (*.pcap) do if not exist "%%~dpnF.xml" tshark -r "%%F" -T psml >"%%~dpnF.xml"

如果要转换不在当前目录中的文件,可以在IN()子句中包含路径信息。