脚本
在批处理文件(.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运行
在服务器上找到的文件打印了出来