我希望根据另一个工具的结果返回一组符合我标准的值!
我的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文件)
答案 0 :(得分:0)
如果要在for循环中检查扩展名,请使用%% ~xA。它将只返回带点的文件扩展名。
if "%%~xA"==".cs"