mrusklon
@mrusklon
если долго мучится - что нибудь получится

Как узнать существует папка и в зависимости от результата сделать действие?

есть у меня скрипт синхронизации winscp который работает из bat файла
@echo off
del %APPDATA%\WinSCP\WinSCP.log

SET userfolder=foldername
SET server=/home/userfolder

"%APPDATA%\WinSCP\WinSCP.com" ^
  /log="%APPDATA%\WinSCP\WinSCP.log" /ini=nul ^
  /command ^
    "open sftp://user:pass@servername/ -hostkey=*" ^
	"cd %server%"^
	"mkdir %userfolder%"^
	"synchronize remote %APPDATA%\ViberPC %server%/%userfolder%/" ^
    "exit"

set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
  echo Success
) else (
  echo Error
)

exit /b %WINSCP_RESULT%


собственно если папка foldername существует то mkdir дает ошибку и весь скрипт прерывается , как проверить на существование папки и если она есть , продолжить работу скрипта дальше?
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
https://winscp.net/forum/viewtopic.php?t=15867&sid...


You can set option batch continue before mkdir to ignore any errors and restore the option batch abort after.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Moskus
@Moskus
Практически дословно - первый же случай синтаксиса https://ss64.com/nt/if.html
Ответ написан
saboteur_kiev
@saboteur_kiev
build engineer
Winscp такое не умеет. Внутренний скрипт очень простой, позволяет объединить несколько операций копирования/создания папок в один вызов, но никаких условий он не предполагает
https://winscp.net/eng/docs/scripting

Думаю, было бы проще работать через ssh/scp - и то и другое есть под виндовс.
И настроить ssh ключи для автоматизации, вместо пароля.
Ответ написан
test ! -d /var/backup/mysql/`date +%Y` && { mkdir -p /var/backup/mysql/`date +%Y` ; }

или
FILE=/etc/resolv.conf
if [[ -f "$FILE" ]]; then
    echo "$FILE exist"
fi
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 120 000 руб.
HRlab Москва
от 80 000 до 190 000 руб.
Modesco Волгоград
от 70 000 до 125 000 руб.