1

Я пытаюсь создать пакетный сценарий, который будет выполнять одно из двух действий в зависимости от того, указан ли тип файла или нет. Я использую If EXIST и IF NOT EXIST , но я не могу заставить их фактически определить, существует ли тип файла или нет. Вот мой код:

@ECHO OFF
IF NOT EXIST *.ini GOTO :NOPROFILE
IF EXIST *.ini GOTO :IMPORT

:INSTALL
COLOR 0B
TITLE Profile Installer
MODE CON COLS=43 LINES=2
cls
SET /P MENU="Do you want to install this profile (Y/N)? "
IF /I "%MENU%" EQU "Y" GOTO :IMPORT
IF /I "%MENU%" EQU "N" GOTO :CANCELLED
IF /I "%MENU%" EQU "Y" GOTO :INVALID
IF /I "%MENU%" NEQ "N" GOTO :INVALID

:IMPORT
MKDIR "%USERPROFILE%\Documents\Dolphin Emulator\Config\Profiles\Wiimote"
COPY "*.ini" "%USERPROFILE%\Documents\Dolphin Emulator\Config\Profiles\Wiimote"
COPY "*.txt" "%USERPROFILE%\Documents\Dolphin Emulator\Config\Profiles\Wiimote"
GOTO :DONE

:INVALID
CLS
SET msgboxTitle=Error!
SET msgboxBody=Please enter one of the above menu options...
SET tmpmsgbox=%TEMP%\Message.vbs
IF EXIST "%tmpmsgbox%" DEL /F /Q "%tmpmsgbox%"
ECHO msgbox "%msgboxBody%",0,"%msgboxTitle%">"%tmpmsgbox%"
Error.exe "%tmpmsgbox%"
GOTO :INSTALL

:DONE
CLS
SET msgboxTitle=Notice
SET msgboxBody=The profile has been successfully installed.
SET tmpmsgbox=%TEMP%\Message.vbs
IF EXIST "%tmpmsgbox%" DEL /F /Q "%tmpmsgbox%"
ECHO msgbox "%msgboxBody%",0,"%msgboxTitle%">"%tmpmsgbox%"
Error.exe "%tmpmsgbox%"
GOTO :OPEN

:OPEN
%SYSTEMROOT%\explorer.exe "%USERPROFILE%\Documents\Dolphin Emulator\Config\Profiles\Wiimote"
GOTO :END

:CANCELLED
CLS
SET msgboxTitle=Notice
SET msgboxBody=Installation cancelled, closing...
SET tmpmsgbox=%TEMP%\Message.vbs
IF EXIST "%tmpmsgbox%" DEL /F /Q "%tmpmsgbox%"
ECHO msgbox "%msgboxBody%",0,"%msgboxTitle%">"%tmpmsgbox%"
Error.exe "%tmpmsgbox%"
GOTO :END

:NOPROFILE
CLS
SET msgboxTitle=Error!
SET msgboxBody=No INI profile detected, closing...
SET tmpmsgbox=%TEMP%\Message.vbs
IF EXIST "%tmpmsgbox%" DEL /F /Q "%tmpmsgbox%"
ECHO msgbox "%msgboxBody%",0,"%msgboxTitle%">"%tmpmsgbox%"
Error.exe "%tmpmsgbox%"
GOTO :END

:END

Возможно ли это, как мне достичь своей цели, объявив определенный тип файла или расширение?

1 ответ1

1

Я думаю, что вы можете использовать следующую команду

SET IS-PROFILE=NO
FOR %%f IN (*.ini) do SET IS-PROFILE=YES

а затем проверить IS-профиль

Как предлагается в комментарии, вы можете разорвать цикл, используя следующую команду

SET IS-PROFILE==NO
FOR %%f IN (*.ini) do (
set IS-PROFILE=YES
echo %%f - File containing INI exists
exit /b
)

IF '%IS-PROFILE%'=='NO' (
echo NO File contains INI type 
)       

Я проверил на своем компьютере на Windows 10, и это работает нормально.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .