Вашият код трябва да увие всички пътища в двойни кавички, за да елиминира празното пространство. Имайте предвид 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"