Il tuo codice dovrebbe racchiudere tutti i percorsi tra virgolette doppie per eliminare gli spazi bianchi. Tieni presente cmd
interpreta ogni lavoro delimitato da spazi come un nuovo comando. Dobbiamo sfuggire a &
poiché diventerà un operatore fisico in batch, infine si preferisce utilizzare il /d
opzione quando si utilizza cd
nel caso provenite da un'altra lettera di unità:
@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
Nota inoltre che non usi mai la password nel tuo pg_dump
comando, quindi devi considerare anche quello. La migliore pratica è modificare
%APPDATA%\postgresql\pgpass.conf
e aggiungi
*:5432:*:username:password
per automatizzare quella parte nel tuo 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 la dir
non esiste, crealo "%APPDATA%\postgresql"