在cmd上使用FINDSTR并输出PATH时出现意外错误

时间:2018-04-10 09:43:57

标签: findstr

在我编写的脚本中,想要通过在python脚本中调用findstr来查找 .cpp 文件中的C ++函数。我正在项目目录中的cmd上手动测试,其中包含多个 .cpp .h 文件。

使用:

findstr /spinm /C:"werden oder sollen neue Versionen dieser Dateien angelegt werden?\",Project::Plural())" *.cpp

输出:

target.cpp

我得到正确的 .cpp 文件,其中包含该函数,我们称之为target.cpp.。但是我正在编写这个python脚本,以便用户以后可以在某些函数上找到更改,所以我需要它应该在输出中显示整个路径。在我使用的堆栈溢出的解决方案中:

for /f "delims=" %a in ('findstr /spinm /C:"werden oder sollen neue Versionen dieser Dateien angelegt werden?\",Project::Plural())" *.cpp') do echo %~fa

输出:

)" *.cpp') do echo %~fa was unexpected at this time.

请注意,如果我使用相同的命令,例如:

for /f "delims=" %a in ('findstr /spinm /C:"bool" *.cpp') do echo %~fa

我得到了所有 .cpp 的列表以及该文件夹中的完整路径(需要什么)以及在其中使用bool类型的子目录。

1 个答案:

答案 0 :(得分:0)

经过几个小时的头脑风暴之后:

for /f "delims=" %a in ('findstr /spinmr /C:"werden oder sollen neue Versionen dieser Dateien angelegt werden?.*,Project::Plural())" *.cpp') do echo %~fa

我不是专家,但是当我使用/R中的findstr选项将我的字符串更改为表达式,然后使用。* (通配符)时的工作原理。

问题是虽然findstr \" 识别为字符串中的引号字符,但当我在in(' **findstr command** ')中使用它时会产生cmd问题期望引号作为额外的字符串输入。