Seu código deve envolver todos os caminhos entre aspas duplas para eliminar espaços em branco. Lembre-se de
cmd
interpreta cada trabalho delimitado por espaço como um novo comando. Precisamos escapar do &
como se tornará um operador físico em lote, por último é preferível usar o /d
opção ao usar cd
caso você venha de outra letra de unidade:@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
Observe também que você nunca usa a senha em seu
pg_dump
comando, então você precisa considerar isso também. A melhor prática é editar %APPDATA%\postgresql\pgpass.conf
e adicione
*:5432:*:username:password
para automatizar essa parte em seu script:
@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
Se o
dir
não existe, crie-o "%APPDATA%\postgresql"