Su código debe envolver todas las rutas entre comillas dobles para eliminar los espacios en blanco. Tenga en cuenta cmd
interpreta cada espacio de trabajo delimitado como un nuevo comando. Necesitamos escapar del &
como se convertirá en un operador físico en lote, por último se prefiere usar el /d
opción al usar cd
en caso de que provenga de otra letra de unidad:
@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
También tenga en cuenta que nunca usa la contraseña en su pg_dump
comando, por lo que debe considerar eso también. La mejor práctica es editar
%APPDATA%\postgresql\pgpass.conf
y agrega
*:5432:*:username:password
para automatizar esa parte en tu 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
Si el dir
no existe, créelo "%APPDATA%\postgresql"