想写一个查询指定目录下所有的makefile所在路径,并且要过滤一些文件夹,
但是按照如下方式写,就会提示此处不应有!=,错误代码为 !file:debug=! NEQ %%i- @echo off
- setlocal EnableDelayedExpansion
- set rootpath=C:\Source\Repos\server
- cd /d %rootpath%
-
- for /r %rootpath% %%i in (Makefile) do (
- set file=%%i
- if !file:debug=! NEQ %%i echo !file!
- )
-
- pause
- endlocal
复制代码 如果换下面这种写法就可以:- @echo off
- setlocal EnableDelayedExpansion
- set rootpath=C:\Source\Repos\server
- cd /d %rootpath%
-
- for /r %rootpath% %%i in (Makefile) do (
- set file=%%i
- set tmp=!file:debug=!
- if !file! EQU !tmp! echo !file!
- )
-
- pause
- endlocal
复制代码 这里我没搞懂直接比较为什么会报错,为什么将 !file:debug=! 赋给另一个变量后再比较就没问题了,
请大佬们帮忙指导一下,我是刚开始学bat,对for循环里的形式变量%%i 的操控比较迷惑 |