gpt4 book ai didi

windows - 如何在本地驱动器中搜索目录是否存在?

转载 作者:可可西里 更新时间:2023-11-01 10:06:09 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何确定目录“\Program Files (x86)\Apache Software Foundation\Apache2.2”是否存在于 Windows 2008 计算机的任何本地驱动器上。

我以为会是这样的:

for /f "skip=2 tokens=2 delims=," %%A in (
'wmic logicaldisk get name /format:csv'
) DO (
echo %%A
IF EXIST "%%A\Program Files (x86)\Apache Software Foundation\Apache2.2" (
echo FOUND ON %%A
)
)

但它只是回显驱动器号。

我是一个 Unix 人,因为这个特定的项目而被困在 Windows 世界中,请帮忙!


我从同事那里得到了一些帮助,这是解决问题的方法:

SET FOUNDIT=FALSE
SET ERRORLEVEL=

FOR /F "skip=2 tokens=2 usebackq delims=," %%i IN (
`wmic logicaldisk where "drivetype=3" get name^,size /format:csv`
) DO (
if /i "%foundit%" equ "true" exit /b
CALL :APACHE %%i
if %ERRORLEVEL% equ 0 set FOUNDIT=TRUE
)

IF %FOUNDIT% equ "TRUE" exit /B ELSE exit /B 1

:APACHE
set DRIVE=%1
REM echo DRIVE is %DRIVE%
if "%DRIVE%" equ "" exit /B
set APACHEPATH=%DRIVE%\Program Files (x86)\Apache Software Foundation\Apache2.2
IF EXIST "%APACHEPATH%" CALL :FOUNDIT "%APACHEPATH%"

exit /B

:FOUNDIT
echo FOUND APACHE on %1
for /f "tokens=*" %%x in (%1) do set APACHEINSTALLDIR=%%x
set FOUNDIT=TRUE
exit /B

感谢您的帮助!

最佳答案

wmic 有一个丑陋的行为:它没有写正确的换行符,所以如果你使用最后一个标记,你会遇到问题。

解决方法:不要使用最后一个标记(或强制它添加另一个您不使用的标记,此处为 size)。由于您不使用最后一个 token ,因此它没有正确结束并不重要

for /F "skip=2 tokens=2 delims=," %A in ('wmic logicaldisk where "drivetype=3" get name^,size /format:csv') DO (

(您必须转义逗号)。

我添加了 where "drivetype=3",所以它只会检查 HardDisks(没有 CD/DVD/Flash),但你可以忽略它。

关于windows - 如何在本地驱动器中搜索目录是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23066597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com