Twój kod powinien owijać wszystkie ścieżki w podwójne cudzysłowy, aby wyeliminować białe znaki. Pamiętaj o cmd
interpretuje każdą pracę oddzieloną spacjami jako nowe polecenie. Musimy uciec przed &
ponieważ stanie się fizycznym operatorem w partii, na koniec preferowane jest użycie /d
opcja podczas korzystania z cd
w przypadku, gdy pochodzisz z innej litery dysku:
@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
Pamiętaj też, że nigdy nie używasz hasła w swoim pg_dump
polecenie, więc musisz to również wziąć pod uwagę. Najlepszą praktyką jest edycja
%APPDATA%\postgresql\pgpass.conf
i dodaj
*:5432:*:username:password
aby zautomatyzować tę część w skrypcie:
@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
Jeśli dir
nie istnieje, utwórz go "%APPDATA%\postgresql"