标题: [文件操作] 求批处理for命令里操作比较形式变量报错的问题 [打印本页]
作者: fanhuaj 时间: 2022-3-19 00:11 标题: 求批处理for命令里操作比较形式变量报错的问题
想写一个查询指定目录下所有的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 的操控比较迷惑
作者: qixiaobin0715 时间: 2022-3-19 08:36
if语句中有这样形式的表达方法:- IF [NOT] string1==string2 command
复制代码
你前一个代码if语句中变量替换含有等号,你懂的电脑非人脑,程序自己会认为可能是使用if上面的表达方法,但少了一个等号,所以会报错。
可以将代码中if语句错误写法修正如下:- if "!file:debug=!" NEQ "%%i" echo !file!
复制代码
作者: fanhuaj 时间: 2022-3-19 11:49
回复 2# qixiaobin0715
明白了明白了,按照你说的方法试了一下,果然没问题了,感谢感谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |