batch-file - 批处理文件:在字符串中查找字符串不起作用
问题描述
我尝试使用此处提到的答案:[Find Substring in String](批处理文件:查找子字符串是否在字符串中(不在文件中))
我尝试调整命令中提到的解决方案,以便将我的 SearchVal 保存在一个变量中,以便可以在运行时更改它。
最小的例子:
set searchVal="cde"
set str1="abcdef"
setlocal enabledelayedexpansion
if not "x!str1:%searchVal%=!"=="x%str1%" echo It contains my subs
endlocal
pause
在我看来,这个小批次应该显示字符串包含我的 subs,但是没有显示任何内容,我不知道为什么,因为我直接使用了应该工作的解决方案。
编辑
感谢这些命令,我发现了我的错误。在我目前的情况下,我查看文件夹中的文件并将文件名保存在数组中,同时执行 for 循环:
for /f "tokens=1 delims=" %%G in ('pathToFolder\*.properties /b') do (
if not "%%~G:%searchVal%=!"=="%%~G" echo It contains my subs !ID_Properties!
set filename[!ID_Properties!]=%%~G
set /a ID_Properties+=1
)
...其中 ID_properties 只是一个计数器,而 searchVal 我正在寻找我的字符串。有谁知道我如何以正确的方式在循环中使用 %%G 以便搜索像以前一样工作?
解决方案
您的 for 循环语法不正确,它似乎是执行dir
命令和循环文件之间的混合。我会坚持使用dir
command 选项并使用usebackq。
@echo off
setlocal EnableDelayedExpansion
set searchVal=cde
set ID_Properties=0
for /f "usebackq tokens=1 delims=" %%G in (`dir pathToFolder\*.properties /b`) do (
set file=%%G
if not "!file:%searchVal%=!"=="!file!" (
echo It contains my subs !ID_Properties!
set filename[!ID_Properties!]=!file!
set /a ID_Properties+=1
)
)
仅当file
包含您的searchVal
;时才填充数组。不知道这是不是你的意图。
推荐阅读
- google-cloud-automl - Google AutoML 项目可见性
- linux - 提取斜线之间的文本块
- asp.net-mvc - 表单验证不断要求 MVC 上的所需 ID
- python - YYYY-M-DTHH:MM:SS 列的排序问题
- c# - 如何使用 Json.NET 解析没有标题的 JSON 数据
- service - 关于系统架构的建议
- python - 如何在 Windows 上用 Python 显示图片?
- amazon-web-services - 通过 SQL Server 身份验证安装 Sensenet 服务包时出现 UTC 偏移错误
- typo3 - TYPO3 前端编辑新闻记录 (ext:frontend_editing)
- loopbackjs - 如何在环回 4 中指定环境变量?