Ваш код должен заключать все пути в двойные кавычки, чтобы исключить пробелы.Помните, что cmd
интерпретирует каждую работу с пробелом как новую команду.Нам нужно экранировать &
, так как он станет физическим оператором в пакете, и, наконец, предпочтительнее использовать опцию /d
при использовании cd
в случае, если вы пришли с другой буквы диска:
@echo off
SET "PGPASSWORD=%Ech0-5910^&123"
set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
cd /d "%root%"
pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" testdb
Также обратите внимание, что вы никогда не используете пароль в своей команде pg_dump
, поэтому вам также следует учесть это.Рекомендуется отредактировать
%APPDATA%\postgresql\pgpass.conf
и добавить
*:5432:*:username:password
для автоматизации этой части в вашем сценарии:
@echo off
echo *:5432:*:postgres:%Ech0-5910^&123>""%APPDATA%\postgresql\pgpass.conf"
set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
cd /d "%root%"
pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" testdb
Если dir
не существуетсоздать его "%APPDATA%\postgresql"