#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)