batch-file - 为什么 FindStr 返回 not-found
问题描述
%vData%
等于HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path
包含 的变量;%main%\Programs\Go\Bin
。
%main%
是同一 Environment 中的变量,它保存 value C:\Main
。
我想在添加之前检查这个值是否存在,所以我有代码:
echo %vData% | FindStr /L /I /C:"%%main%%\\Programs\\Go\\Bin"
我已经尝试过%%main%%
并且%main%
并且%^main%
它%^^main%
始终告诉我该字符串不存在。
我如何让它告诉我它确实存在?
解决方案
鉴于该变量确实包含文字字符串;%main%\Programs\Go\Bin
(您可以通过简单地做来证明它echo/%vData%
),我相信您正在寻找这个:
echo/%%vData%%| findstr /I /C:"%%main%%\\Programs\\Go\\Bin"
或者,更好的是,因为特殊字符vData
受到保护:
cmd /V /C echo(!vData!| findstr /I /C:"%%main%%\\Programs\\Go\\Bin"
您的代码的问题:
echo %vData% | FindStr /L /I /C:"%%main%%\\Programs\\Go\\Bin"
是管道的任一侧在新实例中执行的事实管道的 实例中|
左侧在新cmd
|
执行,cmd
因为它是内部命令[由于在此问题中处理的发现而更新],因此变量vData
被扩展了两次:
当整个命令行被执行时,左边变成:
echo ...;%main%\Programs\Go\Bin
当管道的左侧执行时,它变为:
echo ...;C:\Main\Programs\Go\Bin
推荐阅读
- c# - 对象引用未设置为对象 ef 核心多对多插入的实例
- c - 我不断收到此错误:预期标识符或 '(' before '<' token
- python - 从列表中选择第一个和最后一个 int 值并继续序列直到列表末尾
- react-native-maps - react-native-maps 标记聚类或性能改进
- python - 如何在数据框中查找所有文本值并将它们放入列表中?
- android - 如何在 Android WebView 中启用站点通知?
- reactjs - 将父函数传递给子组件时遇到问题
- machine-learning - 如果 f(w) = log(sigmoid(w^T*x)) 计算 f(w) 的梯度 (d/dw)
- php - 将 If/Else 添加到 WordPress php
- amazon-web-services - 如何在 SNS 过滤中对同一消息属性执行 AND 操作