Search 搜索指定目录和项目的输出位置(如果找到)

Search 搜索指定目录和项目的输出位置(如果找到),search,batch-file,for-loop,Search,Batch File,For Loop,正如标题所说,我想知道如何在windows批处理脚本中使用for循环在指定目录中搜索指定文件。我不能使用任何第三方软件 以下是我目前的情况: for /R "%loc%" %%f in ("%searchterm%") do ( echo %%f echo %%f>> "%genloc%wefound.txt" ) %loc%是它应该搜索的位置 %searchterm%是脚本经常搜索的文件(例如“hello.txt”) 它必须将屏幕上找到的任何文件(包括其完整路径)输出到wefou

正如标题所说,我想知道如何在windows批处理脚本中使用
for
循环在指定目录中搜索指定文件。我不能使用任何第三方软件

以下是我目前的情况:

for /R "%loc%" %%f in ("%searchterm%") do (
echo %%f
echo %%f>> "%genloc%wefound.txt"
)
%loc%
是它应该搜索的位置

%searchterm%
是脚本经常搜索的文件(例如“hello.txt”)

它必须将屏幕上找到的任何文件(包括其完整路径)输出到wefound.txt中

如果你需要更多细节,请告诉我

for /f "delims=" %%f in ('dir /s /b /a-d "%loc%\%searchterm%"') do (
    echo %%f
    echo %%f>> "%genloc%wefound.txt"
)
要获得递归枚举起始点下文件的
for/r
命令,文件集必须包含一些通配符(
*
)。您知道确切的文件名,让
dir
命令搜索文件

for /R "%loc%" %%f in ("%searchterm%") do (
   echo %%~Ff
   echo %%~Ff>> "%genloc%wefound.txt"
)

有关详细信息,请键入:
For/?

为什么要使用For使事情复杂化?您只需使用DIR命令:

dir /s /b /a-d "%loc%\%searchterm%>"%genloc%wefound.txt"&type "%genloc%wefound.txt"
如果您可以使用tee命令的Windows端口(有许多免费版本可用),那么解决方案就更好了。你可以用我的混合动力车


所以,我在我的剧本中试过了。如果文件位于bat文件本身的子目录中,则它可以工作。但是如果我将
%loc%
设置为C:\它将什么也找不到。有什么想法吗?编辑:我注意到我遇到了这个错误:“文件名、目录名或卷标语法不正确。”@magicbennie,发布的代码在
%loc%
%searchterm%
之间添加了反斜杠。如果
%lock%
的内容以反斜杠结尾,则表示反斜杠是双斜杠,如果它是子目录,则所有内容都有效。但是,如果
%loc%
指向驱动器的根,则反斜杠不能加倍。最好的选择是确保
%loc%
始终包含反斜杠,并从
dir
命令中删除添加的反斜杠。
dir /s /b /a-d "%loc%\%searchterm%"|tee "%genloc%wefound.txt"