Batch file 如何找到具有特定字符串的变量?
我想创建一个脚本,用于检查特定字符串中以“var”开头的所有变量。下面的代码中有三个变量,我希望它找到字符串Batch file 如何找到具有特定字符串的变量?,batch-file,Batch File,我想创建一个脚本,用于检查特定字符串中以“var”开头的所有变量。下面的代码中有三个变量,我希望它找到字符串code,并输出包含它的变量的名称 set var1=hi set var2=code set var3=bye :: variable checker here echo Variable %variable% has the string 'code' in it. 在上面的例子中,输出应该是var2,但是我一点也不知道如何检查字符串的变量。下面是我的注释,作为一个答案,用Rem
code
,并输出包含它的变量的名称
set var1=hi
set var2=code
set var3=bye
:: variable checker here
echo Variable %variable% has the string 'code' in it.
在上面的例子中,输出应该是
var2
,但是我一点也不知道如何检查字符串的变量。下面是我的注释,作为一个答案,用Rem
ark来说明它是如何工作的:
@Echo关闭
Rem取消定义名称以Var开头的任何变量
对于/F“Delims=”('Set Var 2^>NUL')中的%%A,请执行设置“%%A=”
Rem定义一些名称以Var开头的新变量
设置“Var1=Some string”
设置“Var2=代码字符串”
设置“Var3=另一个包含代码的字符串”
设置“Var4=345678”
Rem显示名称以Var开头的所有变量及其值
设置变量2>NUL
Rem检查名称以Var开头且值中包含字符串“code”的任何变量
对于('Set Var 2^>num^ | Find“code”')中的/F“Delims==”%%A,Do Echo变量%%A中包含字符串“code”。
Rem暂停脚本以查看输出
暂停
当然,在搜索所需字符串时,可以使用/I
选项和Find
忽略大小写
如果要查看值大小写是否与code
不敏感地匹配,可以将的第二个循环更改为:
For/F“Tokens=1*Delims==”%A In('Set Var 2^>NUL')如果/I“%%B”==“code”Echo变量%%A具有字符串值“code”,则执行该操作。
假设变量应包含任何形式的code
,这是非常简单的:
@echo off
for /f "tokens=1,* delims==" %%i in ('set ^|findstr "code" ^|findstr "var"') do echo %%i has code in it as %%j
或者,如果案例不重要:
@echo off
for /f "tokens=1,* delims==" %%i in ('set ^|findstr /i "code" ^|findstr /i "var"') do echo %%i has code in it as %%j
您可以使用查找具有特定值的变量:
2>numset变量| findstr/X/I/C:[^=][^=][^=]*=code”
要处理结果,请使用:
for/F“令牌=1*delims==eol==”%%V in('
2^>nul set VAR^| findstr/X/I/C:“[^=][^=][^=]*=code”
“)do echo变量%%V设置为%%W。
如果要进行区分大小写的比较,请删除/I
如果不希望整个值匹配,请将/X
替换为/B
以匹配开头,或替换为/E
以匹配结尾,或删除/X
以匹配任何位置
如果一个值以(an)=
开头,则在输出中会缺少符号。这能帮助您吗,@For/F“Delims==”%%a in('Set var 2^>num^/I“code”')Do@Echo变量%%a中有字符串“code”。