无法通过bat文件中的文件扩展名进行筛选

时间:2014-01-31 13:33:23

标签: batch-file

我希望根据另一个工具的结果返回一组符合我标准的值!

我的bat文件使用ClearCase工具(as per this question)读取文件列表,并将它们写入屏幕。我现在想要过滤结果,它只显示以.cs结尾的文件(注意,名称中可能还有其他句号)

我的代码

@echo off
setlocal
for /F "usebackq delims=" %%A in (`cleartool ls  -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do if %%A==*.cs @echo %%A

我失去了为什么当我运行以下内容时(请注意脚本的结尾不同)...

@echo off
setlocal
for /F "usebackq delims=" %%A in (`cleartool ls  -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do @echo %%A

...我看到很多结果(包括扩展名为.cs的文件)​​。但是,当我运行第一个代码脚本时,它会运行但不向屏幕写入任何内容。当我运行第二个代码示例时,我看到的一行是

我确实尝试添加引号,但没有区别。

if "%%A"=="*.cs"

当我运行第二段代码时,结果看起来像

.\bin\x86 
.\bin\x86\Debug
.\Debug\mywork.exe.embed.manifest  
.\obj\x86\Debug\myThings.dll  
.\Html\MyFile.cs  
.\obj\x86\Debug\MyProject\Views\File.baml  
.\obj\x86\Debug\MyProject\Views\File.g.cs  
.\obj\x86\Debug\MyProject\Views\File.g.i.cs  

从上面看,理想情况下我只想看MyFile.cs(尽管我可以很容易地使用所有.cs文件)

1 个答案:

答案 0 :(得分:0)

如果要在for循环中检查扩展名,请使用%% ~xA。它将只返回带点的文件扩展名。

if "%%~xA"==".cs"