FTP проверяет, существует ли каталог на сервере или нет

#batch-file #ftp

#пакетный файл #ftp

Вопрос:

Я запускаю backup.bat скрипт и использую команду ниже:

 echo cd /public_html/GURUITSOFTWARESBACKUP>> ftpcmd.dat
  

Я получаю ответ 550

Не удается изменить каталог на /public_html/GURUITSOFTWARESBACKUP: нет такого файла или каталога

Мне нужно изменить путь к другому каталогу в случае, если указанный выше путь не существует.

Ответ №1:

Это вряд ли выполнимо с помощью пакетного файла и встроенной Windows ftp .

Вам лучше использовать какой-нибудь сторонний FTP-клиент. Но даже в этом случае нелегко выполнить какую-либо условную обработку в пакетном файле, если вы не найдете FTP-клиент со встроенным реальным скриптом (я не знаю ни одного).). Использование другого языка сценариев, отличного от пакетного файла, было бы лучшим вариантом.

В любом случае, если вы используете сценарии WinSCP, вы можете сделать что-то вроде этого:

 @echo off
 
set SESSION=ftp://username:password@example.com/
set REMOTE_PATH=/path/one
set REMOTE_PATH2=/path/two
winscp.com /command ^
    "open %SESSION%" ^
    "stat %REMOTE_PATH%" ^
    "exit"
 
echo %ERRORLEVEL%
if %ERRORLEVEL% equ 0 (
    echo Directory %REMOTE_PATH% exists, will use it
) else (
    echo Error or directory %REMOTE_PATH% not exists, will use %REMOTE_PATH2%
    set REMOTE_PATH=%REMOTE_PATH2%
)

echo Doing something with %REMOTE_PATH%
winscp.com /command ^
    "open %SESSION%" ^
    "cd %REMOTE_PATH%" ^
    "ls" ^
    "exit"
  

Это основано на статье WinSCP, проверяющей существование файла.


В статье также показано, как проверить существование [файла / каталога] с помощью сборки WinSCP .NET из сценария PowerShell. Это то, что я бы рекомендовал.

(Я автор WinSCP)