为什么在七个地狱中,这仅适用于单个单词的文件名,而不适用于多个单词的文件名?...
echo.
set /p "file=Please enter the filename, including extension: "
echo.
echo Searching for %file%, please wait...
setlocal
for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
for /f "tokens=*" %%a in ('dir /b /s /a-d %%i:\%file% 2^>nul') do (
set "found=%%a" & goto FOUND
))
echo.
echo File not found
echo.
echo Press any key to exit
pause>nul
goto :EOF
:FOUND
echo.
echo File found in %found%
for %%A in ("%found%") do (
Set folder=%%~dpA
Set name=%%~nxA
)
cd %folder%
explorer .
echo.
echo Press any key to exit
pause>nul
代码已被修改,并且可以从在线的各种来源中获取...感谢您的帮助!
我不确定您要在这里完成什么(在每个驱动器的根目录下查找指定的文件吗?),但是您的问题在于此行:
for /f "tokens=*" %%a in ('dir /b /s /a-d %%i:\%file% 2^>nul') do (
您需要用引号引起来:%% i:\%file%
给定一个名为的文件my file.txt
,dir
循环中命令的输出为:
dir /b /s /a-d c:\my file.txt 2^>nul
,显然是无效的,因为文件名中有空格。
这将导致您的脚本正常工作:
for /f "tokens=*" %%a in ('dir /b /s /a-d "%%i:\%file%" 2^>nul') do (
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句