bat 查找文件所在

脚本

在批处理文件(.bat)中查找文件所在的目录,你可以使用dir命令结合循环和条件语句来实现。以下是一个简单的示例,演示如何在批处理文件中查找指定文件并输出其所在目录:

`@echo off
setlocal enabledelayedexpansion

set "searchFile=yourfile.txt" REM 替换为你要查找的文件名

REM 在每个磁盘分区上查找文件
for %%d 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 (
REM 使用dir命令查找文件,并输出完整路径
dir /s /b "%%d:\%searchFile%"
)

endlocal`

在这个示例中,你需要将yourfile.txt替换为你要查找的实际文件名。批处理文件会遍历每个磁盘分区(从C到Z),并使用dir命令的/s参数来搜索指定文件。/b参数用于仅输出文件的完整路径。

请注意,这个示例假设你要查找的文件位于本地计算机上的磁盘分区中。如果你要搜索网络位置或其他特殊目录,你需要相应地修改代码。

此外,这个示例会输出所有找到的文件路径。如果你只想输出第一个找到的文件的路径,你可以使用exit命令在找到文件后退出循环。如果你需要更复杂的逻辑,比如只输出特定目录下的文件路径,你可能需要添加更多的条件语句和循环。

测试

测试脚本

chcp 65001
@REM @echo off
@REM reg query "HKLM\SOFTWARE\VMware, Inc." /s 2>nul
@REM if %errorlevel%==0 (
@REM     echo VMware 已安装。
@REM ) else (
@REM     echo VMware 未安装。
@REM )

REM 自动判断权限问题,主动获取管理员权限
 
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 
 
if '%errorlevel%' NEQ '0' (  
    goto UACPrompt  
) else ( goto gotAdmin )  
   
:UACPrompt  
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 
    "%temp%\getadmin.vbs" 
    exit /B  
   
:gotAdmin  
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )  
    pushd "%CD%" 
    CD /D "%~dp0" 
 
:begin

@echo off
setlocal enabledelayedexpansion

set "searchFile=geek.exe"  

REM 在每个磁盘分区上查找文件
for %%d 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 (
    REM 使用dir命令查找文件,并输出完整路径
    dir /s /b "%%d:\%searchFile%"
)

endlocal

pause

我们举例查找这个下图中的文件

双击bat运行

在服务器上找到的文件打印了出来