我正在尝试使用批处理文件来生成linux库的符号链接(是的,我试图在Windows上执行此操作,它需要跨平台)。我有3个文件
我正在尝试遍历文件,只生成前2个文件的链接(第3个文件不需要生成链接)。我使用以下命令循环遍历文件
for %%F in (lib*.so.*) do (
echo %%F
)
然而,它不是只抓取前两个文件,而是抓取第三个文件,这会破坏我的脚本。如何使for循环忽略任何以.so?
结尾的文件答案 0 :(得分:1)
for %%F in (lib*.so.*) do IF /i "%%~xF" NEQ ".so" (
如果文件名的扩展名部分不等于.so
,则无论如何......
见for/?|more
或`if /?来自docco的提示
答案 1 :(得分:1)
我完全忘记了无证的通配符。
for %%G IN ("lib*.so.<*") do echo %%G
您可以在Dostips上阅读相关内容。 http://www.dostips.com/forum/viewtopic.php?f=3&t=6207#p39390 但这是Dave运行的测试。
| | GREEDY NATURE
file | "??.??.??" | ">>.>>.>>" | "?a?.??.??" | ">a>.??.??"
----------------+------------+------------+-------------+-------------
a | match | no match | no match | no match
ab | match | no match | no match | no match
abc | no match | no match | no match | no match
a.1 | match | no match | no match | no match
ab.12 | match | no match | no match | no match
abc.123 | no match | no match | no match | no match
a.1.x | match | match | no match | no match
ab.12.xy | match | match | no match | no match
abc.123.xyz | no match | no match | no match | no match
a.1.x.7 | no match | no match | no match | no match
ab.12.xy.78 | no match | no match | no match | no match
abc.123.xyz.789 | no match | no match | no match | no match
| NON-GREEDY
file | "*.*.*" | "*." | "**." | "abc.*." | "*a*"
----------------+----------+----------+-------+----------+-----------
abc | match | match | match | match | match
abc.123 | match | no match | match | match | match
abc.123.xyz | match | no match | match | match | match
abc.123.xyz.789 | match | no match | match | match | match
| NON-GREEDY
file | "<.<.<" | "<" | "<<" | "abc.<" | "<a<" | "<a<<"
----------------+----------+----------+-------+----------+----------+--------
abc | no match | match | match | no match | match | match
abc.123 | no match | no match | match | match | no match | match
abc.123.xyz | match | no match | match | no match | no match | match
abc.123.xyz.789 | match | no match | match | no match | no match | match
答案 2 :(得分:0)
Magoo的答案是针对您的问题的最佳解决方案,但这是使用FINDSTR命令的正则表达式解决它的方法。
FOR /F "delim=" %%G IN ('dir /B lib*.so.* ^|findstr /R /C:"lib.*\.so\..*"') DO ECHO %%G