Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 查找多个文件';具有相同文件名的路径_Batch File_Cmd - Fatal编程技术网

Batch file 查找多个文件';具有相同文件名的路径

Batch file 查找多个文件';具有相同文件名的路径,batch-file,cmd,Batch File,Cmd,我试图编写一个批处理脚本,查找与输入字符串同名的文件的所有路径。现在它只能找到找到的第一个文件,我想不出一种方法让它列出多个文件的位置。我不是很有经验,我需要一些帮助 这是脚本代码的一部分: :start cls echo Enter file name with extension: set /p filename= echo Searching... for %%a in (C D E F G H U W) do ( for /f "tokens=*

我试图编写一个批处理脚本,查找与输入字符串同名的文件的所有路径。现在它只能找到找到的第一个文件,我想不出一种方法让它列出多个文件的位置。我不是很有经验,我需要一些帮助

这是脚本代码的一部分:

:start
    cls
    echo Enter file name with extension:
    set /p filename=
    echo Searching...

for %%a in (C D E F G H U W) do (
    for /f "tokens=*" %%b in ('dir /s /b "%%a:\%filename%"') do (
        set file=%%~nxb
        set folderpath=%%~dpb\
        ::the path of the file without the filename included "C:\folder\folder\"
        set fullpath=%%b
        ::the path of the file with the filename included "C:\folder\folder\file"
        goto break
  )
)
:notfound
    cls
    echo Enter file name with extension:
    echo %filename%
    echo File Not Found!
    ping localhost -n 4 >nul
    goto start

:break
    if "%folderpath:~-1%"=="\" set folderpath=%folderpath:~,-1%
    cls
    echo ? %filename% found
    echo %fullpath1%
    echo %fullpath2%
    echo %fullpath3%
    --- || ---
我希望脚本搜索计算机,列出所有遇到的同名文件,并且我希望能够将这些文件的路径放入不同的变量中。 例如,如果readme.txt是输入,那么我需要具有该特定名称(readme.txt)的所有文件的所有路径的列表,并且我要为每个路径设置变量,以便之后可以使用它

例如:

input:  
readme.txt

output:  
3 files found  
C:\folder\folder\readme.txt  
C:\folder\folder\folder\readme.txt  
D:\folder\readme.txt

variables:
path1 = C:\folder\folder\readme.txt
path2 = C:\folder\folder\folder\readme.txt
path3 = D:\folder\readme.txt

下面是一个脚本,它将执行请求的任务。它在所有驱动器中搜索扩展名为的输入文件名,将找到的每个完整文件路径放入一个变量中,然后为您输出这些变量。我不会在回复后为任何新的更改裁剪脚本,也不会建议如何将其集成到脚本的其余部分,也不会支持您随后可能进行的任何更改

@Echo关闭
Set/P“SearchTerm=输入扩展名为的文件名:
设置“i=0”
对于('WMIC LogicalDisk Where')中的/F“Skip=1”%%A^
“DriveType>1且DriveType!=5且自由空间不为Null”Get DeviceID“
)对于%%B英寸(%%A)的Do(对于/F“Delims=“%%C英寸(
'其中/F/R%%B\%SearchTerm%%“2^>Nul')Do(设置/A i+=1
调用集完整路径[%%i%%]=%%C))
如果%i%LSS 1(回显=%SearchTerm%未找到)其他(
Echo=%SearchTerm%具有%i%匹配项(es^)
对于(1,1,%i%)中的/L%%A,请执行以下操作(
调用Echo=%%%%%FullPath[%%%A]%%%%=%%%FullPath[%%%A]%)
超时-1>Nul

请注意,搜索多个位置并将多个文件放入变量可能会使系统负担过重并导致问题。

谢谢您的评论。我接受了你的建议,不再同时搜索多个文件,而是一次搜索一个文件并在所有函数上运行它,然后搜索另一个文件并重新搜索,直到没有文件。