我正在尝试创建一个Windows批处理文件,在我的c盘中搜索我指定的文件名,然后显示任何文件或文件夹的完整路径,其中包含搜索到的文本到results.txt。我已经尝试了几个脚本,但我还没有成功。我在过去两周左右才开始使用批次,我对此非常陌生。 我一直在尝试的脚本示例
echo off
title Search
set input=
set /p input=
find C:\%input% >> results.txt
pause
我也尝试过使用这个脚本,这在某种程度上有效。
title BROWSER
echo off
color 0a
:start
cls
echo To search for a file enter the filename below.
set input=
set /p input=Search:
cls
echo Are you sure %input% is correct?
set input2=
set /p input2=(Y/N)
if %input2%==Y start %input% && goto start
if %input2%==N goto start
虽然这不会写入txt文件而是打开文件/文件夹。
答案 0 :(得分:2)
您似乎误解了Windows find
命令的作用。它找不到文件名;它搜索文件中的文本字符串。正如您现在所做的那样,您应该在find
命令上收到语法错误,因为它需要两个输入:要搜索的文本字符串和要搜索的文件。例如,您可能想要做的是:
find c:\%input% "%1"
然后用户输入如下内容:
myfind * .txt
然后,您的批处理文件将提示搜索字符串,并搜索与*.txt
匹配的所有文件。
就个人而言,我不会将C:\
添加到find
命令,因为这会将批处理文件限制为仅在C:
驱动器上运行。我也不会提示输入字符串。我只想这样做:
find "%1" "%2"
然后用户会像这样调用它:
myfind somestring c:\*.txt
另一方面,如果您不想在文件中搜索文本字符串而只是按名称查找文件,那么您只需要dir
命令和/s
选项。您的批处理文件看起来像这样:
echo off
title Search
set input=
set /p input=
dir C:\%input% /s /b >> results.txt
pause
/s
选项会导致dir
搜索整个驱动器,而/b
选项只会为您提供没有通常dir
标头的完全限定文件名页脚。