我正在尝试制作一个搜索我的C盘的Windows批处理文件

时间:2014-02-06 22:36:42

标签: windows batch-file

我正在尝试创建一个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文件而是打开文件/文件夹。

1 个答案:

答案 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标头的完全限定文件名页脚。