batch命令用于使用带参数化路径的findstr

时间:2013-07-05 18:55:55

标签: batch-file

如何在findstr中使用参数化路径查找某些文本并获取它?

我使用了以下命令,但遗憾的是它无效。它能够从同一路径中找到文件中的文本。

此代码正在运行:

@echo off
findstr /m "boy" A.txt 
if %errorlevel%==0 (
  echo Found! >log.txt
)
if %errorlevel%==1  (
  echo No matches found >log.txt
)

这不起作用:

set target_path = \\C:\Users\ayanjit\Desktop\New folder 

findstr /m "boy" %target_path%\A.txt 
if %errorlevel%==0 (
  echo Found! >log.txt
)
if %errorlevel%==1  (
  echo No matches found >log.txt
)

3 个答案:

答案 0 :(得分:2)

SPACES在SET命令中很重要。您正在设置环境变量"target_path "的值,但使用环境变量"target_path"。由于未设置变量,因此您正在查找文件\A.txt

接下来的问题是,由于您想要的完整文件名包含空格,您需要查找"%target_path\A.txt" - 其中引号是必需的。那是在您将变量分配给target_path之后。

答案 1 :(得分:1)

\\C:\...是无效的语法。使用C:\...作为本地路径,或\\hostname\share\...作为远程路径。另外,正如Peter Wright所指出的,变量赋值中=符号周围不应有空格:

set "var=value"

而不是

set var = value

并且你应该在任何带有空格的路径周围放置双引号(包括包含这些路径的变量)。

答案 2 :(得分:1)

试试这个:

set "target_path=C:\Users\ayanjit\Desktop\New folder" 

findstr /m "boy" "%target_path%\A.txt"
if %errorlevel%==0 (
  >log.txt echo Found! 
) else (
  >log.txt echo No matches found 
)