Как вы используете пакет IF EXIST для тестирования каталогов? - PullRequest
0 голосов
/ 06 декабря 2018

Пакет здесь корректно вставляет файл, но предоставляет странный вывод для IF EXIST.Я подтвердил, что проблема связана с утверждением echos до и после него, но IF EXIST проверяет связь как истина, если копия удаляется.Я получаю сообщение об ошибке: «Не удается найти указанный диск».

Код указан ниже.

ECHO OFF
ECHO This batch file will place the background and user icons for Windows 7 install.

SET directoryName=C:\Users\yourname\Desktop\BatchTestingFolder\ImageInsertReal\testfolder

ECHO %directoryName%
PAUSE

IF EXIST guest.bmp ( 
::If image exists
ECHO 1
::1--
IF EXIST %directoryName% ( 
    ::If directory exists
    ::insert all below images
::2--
    ECHO 2
    COPY /-Y guest.bmp %directoryName% ) ELSE (
    ::Else echo directory doesnt exist
::2--
    ECHO The folder %directoryName% does not exist. 
goto ENDER ) ) ELSE (   
::Else echo image doesn't exist
::1--
ECHO Images do not exist in current batch file directory. 
goto ENDER )

::Exit insertion
:ENDER
PAUSE

1 Ответ

0 голосов
/ 06 декабря 2018

Я настоятельно рекомендую вам использовать синтаксис кодирования, который читается.

  • Правильный отступ помогает с удобочитаемостью блоков кода в скобках.
  • Использование двойного двоеточия в качестве комментария внутри блока кода в скобках может привести к нежелательному выводу кода.
  • Вы можете использовать обратную косую черту, чтобы убедиться, что вы проверяете наличие каталога.
  • Используйте кавычки вокруг имен файлов и путей к файлам для защиты пробелов и специальных символов.

Это может решить ваши проблемы.

@ECHO OFF
ECHO This batch file will place the background and user icons for Windows 7 install.

SET "directoryName=C:\Users\yourname\Desktop\BatchTestingFolder\ImageInsertReal\testfolder"

ECHO %directoryName%
PAUSE

IF EXIST guest.bmp ( 
    REM If image exists
    ECHO 1
    REM 1--
    IF EXIST "%directoryName%\" (
        REM If directory exists
        REM insert all below images
        REM 2--
        ECHO 2
        COPY /-Y guest.bmp "%directoryName%\"
    ) ELSE (
        REM Else echo directory doesnt exist
        REM 2--
        ECHO The folder %directoryName% does not exist. 
        goto ENDER
    )
) ELSE (
    REM Else echo image doesn't exist
    REM 1--
    ECHO Images do not exist in current batch file directory. 
    goto ENDER
)

::Exit insertion
:ENDER
PAUSE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...