我正在尝试编写一个简单的batch file来执行以下操作:
从多个CSV文件中查找具有该条件的数据。 (每个队可以有很多行)
循环直到队伍结束。
CSV文件包含这样的数据:
"Team A",2013/06/15 02:14:58 -0400,"X","LQ3SUEEWPWKL6",005,"Team C",2011/01/14 00:00:00 -0400,"Y","LQ4STREWNBKM5",004,"Team B",2014/06/20 03:54:12 -0321,"Team A",......
该文本文件包含:
Team A Team B Team C Team D ...
这是我试过的代码:
使用batch file修改find的文本
使用win批处理脚本比较SIDE和SIDE
命令提示符和cmd有什么区别?
如何获得以START命令开始的batch file的返回/退出代码?
使用命令行禁用以太网连接?
FOR %%A IN (Team.txt) DO Find "%%A" *.csv > result.txt
批处理脚本多选
在Windows中批量重命名子目录
同时执行多个batch file并监视其处理是否完成
如何从DOS批处理命令发送电子邮件?
在使用PowerShell的控制台中使用CMD脚本时是否存在任何基本不兼容问题?
我如何根据指定的标准提取行?
使用下面的批处理文件(test.cmd):
@echo off setlocal enabledelayedexpansion for /f "delims=" %%t in (team.txt) do ( for /f "usebackq tokens=*" %%i in (`findstr /c:"%%t" *.csv`) do ( set _line=%%i rem strip filenames from findstr output set _line=!_line:*:=%! echo !_line! >> "%%t".csv ) ) endlocal
笔记:
team.txt包含团队名称 。
如果某个特定团队名称有匹配的行,则使用名称团队名称 .csv创建一个输出csv文件。
F:test>type team.txt Team A Team B Team C Team D F:test>type *.csv 1.csv "Team A",2.csv "Team A",F:test>test processing Team A processing Team B processing Team C processing Team D F:test>type t*.csv Team A.csv "Team A",Team B.csv "Team B",Team C.csv "Team C",
进一步阅读
Windows CMD命令行的AZ索引 – 与Windows cmd行有关的所有东西的极好参考。
enabledelayedexpansion – 延迟扩展将导致变量在执行时扩展,而不是在解析时。
for / f – 循环命令针对另一个命令的结果。
语法替换 – 变量编辑/替换
在PowerShell ,您可以使用Import-Csv cmdlet。 只需指定第一列的标题以使用属性名称启用访问,使用Select-Object选择它,最后使用Out-File cmdlet将其写入文件 :
Import-Csv -Path 'your_source_path.csv' -Header "Team" | select -ExpandProperty Team | Out-File 'YourDestination.txt'
Team A Team C Team B Team A Team C Team B
假设你的文本文件没有隔行的空格,因为这很奇怪:
for /f "delims=" %t in (teams-in.txt) do (grep "%t" *.csv > "%t.out")
其中grep是Windows的grep
[编辑:并不输出到搜索* .csv 咳嗽同一文件夹中的.csv]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。