我的目标是在 C:\ 驱动器的任何目录中搜索名为“setup95.exe”的文件,但不是这些目录的目录。如果文件存在,那么我需要将路径写入一个名为%getpath%
.
我最初试图简单地使用dir
,但它不符合我的期望。我需要在 C:\ 中获取任何目录并搜索它。例如,假设我在 C:\ 中有一个名为__neverhood
. 在该文件夹中,有一个名为setup95.exe
. 该程序不知道它是哪个文件夹。它只知道它在 C:\ 中,因此它需要在 C:\ 中的每个目录中搜索才能找到setup95.exe
.
更新:新代码。它找到了文件,但对磁盘驱动器没有好处。这是代码的摘录:
@ECHO OFF
SETLOCAL
SET "traversity=C:\Program Files (x86)\"
if not exist "C:\Program Files (x86)" SET "traversity=C:\Program Files\"
SET intricacy=%traversity%The Neverhood Restoration Project
SET obscurity=%traversity%DreamWorks Interactive
SET psychedelia=%obscurity%\Neverhood
SET abstraction=WAVistaWin7.exe
:removenrp
if exist "%traversity%The Neverhood Restoration Project Julia\unins000.exe" (
"%traversity%The Neverhood Restoration Project Julia\unins000.exe"
)
:delreg
if %PROCESSOR_ARCHITECTURE%==x86 (
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\DreamWorks Interactive" /f
) else (
if %PROCESSOR_ARCHITECTURE%==AMD64 (
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\DreamWorks Interactive" /f
) else (
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\DreamWorks Interactive" /f
))
if exist "%obscurity%" echo y | rmdir /S /Q "%obscurity%"
mkdir "%obscurity%"
mkdir "%psychedelia%"
copy /Y "%~dp0%abstraction%" "%psychedelia%"
for /d %%a in (c:\*) do for /f "delims=" %%i in ('dir /b /a-d "%%~a\setup95.exe" 2^>nul') do set "getpath=%%~a"
if defined getpath (echo path is %getpath%) else rem ok
if exist "%getpath%setup95.exe" (
echo MSGBOX "Pyroneous did not distribute the Neverhood illicitly to you. Remember that the only legal way to run the Neverhood is to buy it. We will still permit you to install the Neverhood, but we are not responsible for your actions. You can read our full purposes at theneverhood.sourceforge.net. Thanks!" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q
reg import "%~dp0neverhood.reg"
START "%getpath%setup95.exe"
) else (
for %%D in (a b 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 vol %%D: >output 2>output && if exist %%D:\setup95.exe set DRIVE=%%D
if not defined DRIVE echo It appears you don't have the Neverhood on your computer. Please check http://theneverhood.sourceforge.net/setup/ for more information. && pause
if exist "%DRIVE%:\setup95.exe" (
echo MSGBOX "Hey. Thank you for purchasing the Neverhood. That is, if you're not using an burned ISO/exploitation." > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q
reg import "%~dp0neverhood.reg"
START D:\setup95.exe
) )
输出返回:
C:\Users\b\Desktop\somnacea\files\thankyousanta\necessity>install.bat
ERROR: The system was unable to find the specified registry key or value.
The process tried to write to a nonexistent pipe.
1 file(s) copied.
The process cannot access the file because it is being used by another process.
The process cannot access the file because it is being used by another process.
It appears you don't have the Neverhood on your computer. Please check http://th
eneverhood.sourceforge.net/setup/ for more information.
Press any key to continue . . .