В пакетном файле мне нужно получить путь от пользователя, удалить обратную косую черту, если они его включили, а затем проверить, находятся ли какие-либо файлы с расширением .sql в указанной папке.Если нет, я хочу вернуть их в раздел ввода переменных.
Вот что у меня есть:
REM Get the folder paths from the user
:setfolderpaths
set /p SCRIPTFOLDER="D:\Mark\Centriq Extraction Projects\"
set /p OUTPUTFOLDER="D:\Mark\Centriq Extraction Projects\"
REM View what the user entered (testing only)
echo %SCRIPTFOLDER%
echo %OUTPUTFOLDER%
REM pause here to check the user entry (testing only)
@pause
REM Remove trailing slashes from the folder path if they exist
if %SCRIPTFOLDER:~-1%==\ set SCRIPTFOLDER=%SCRIPTFOLDER:~0,-1%
if %OUTPUTFOLDER:~-1%==\ set OUTPUTFOLDER=%OUTPUTFOLDER:~0,-1%
REM If the folder the user entered doesn't exist, go back to the folder entry section
if not exist %SCRIPTFOLDER% + "\*.sql" (
goto setfolderpaths
)
Однако, когда я запускаю файл, после того, как я нажимаю клавишу, чтобы продолжить вПауза, окно cmd закрывается немедленно.Я проверил, что строки, удаляющие обратную косую черту, работают, поэтому проблема, кажется, в моей проверке if not exist
.
РЕДАКТИРОВАТЬ Очевидно, у меня был некоторый код в моем примере, который сбивал с толкучто я пытаюсь выяснить.Я добавил комментарии, чтобы объяснить, что я делаю в каждой части.Мне просто нужно выяснить, почему мои файлы проверки для ..sql в указанной пользователем папке не работают.
ОБНОВЛЕНИЕ
Хорошо, я очистил свою цитатувыдает по предложениям @LotPings.
Итак, когда я ставлю эхо прямо перед проверкой if
:
echo %SCRIPTFOLDER%
@pause
Это показывает действительный путь, который, как я знаю, делает *В 1024 * есть файлы sql.Так что этот код не работает:
if not exist "%SCRIPTFOLDER%\*.sql" (
goto setfolderpaths
)
Когда я нажимаю клавишу, чтобы продолжить на паузе, окно cmd закрывается.