我尝试编写一个批处理脚本,找到与输入字符串同名的文件的所有路径。现在它只能找到找到的第一个文件,我想不出一种让它列出多个文件位置的方法。我不是很有经验,我需要一些帮助。
这是脚本代码的一部分:
: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
答案 0 :(得分:0)
这是一个执行请求任务的脚本。它使用扩展名搜索所有驱动器的输入文件名,将每个找到的完整文件路径放入变量中,然后为您输出这些变量。在回复之后,我不会为任何新的更改定制脚本,建议如何将其集成到脚本的其余部分或支持您随后可能做出的任何更改。
@Echo Off
Set/P "SearchTerm=Enter file name with extension: "
Set "i=0"
For /F "Skip=1" %%A In ('WMIC LogicalDisk Where^
"DriveType>1 And DriveType!=5 And FreeSpace Is Not Null" Get DeviceID'
) Do For %%B In (%%A) Do (For /F "Delims=" %%C In (
'Where/F /R %%B\ "%SearchTerm%"2^>Nul') Do (Set/A i+=1
Call Set FullPath[%%i%%]=%%C))
If %i% LSS 1 (Echo= %SearchTerm% Not Found) Else (
Echo= %SearchTerm% had %i% match(es^)
For /L %%A In (1,1,%i%) Do (
Call Echo= %%%%FullPath[%%A]%%%% = %%FullPath[%%A]%%))
Timeout -1 1>Nul
请注意,搜索多个位置并将许多文件放入变量可能会使系统负担过重并导致问题。