Din kode skal indpakke alle stier i dobbelte anførselstegn for at eliminere mellemrum. Husk cmd fortolker hvert rumafgrænset værk som en ny kommando. Vi er nødt til at undslippe & da det vil blive en fysisk operatør i batch, til sidst foretrækkes det at bruge /d mulighed, når du bruger cd hvis du kommer fra et andet drevbogstav:
@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
Bemærk også, at du aldrig bruger adgangskoden i din pg_dump kommando, så det skal du også overveje. Bedste praksis er at redigere
%APPDATA%\postgresql\pgpass.conf
og tilføje
*:5432:*:username:password
for at automatisere den del i dit 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
Hvis dir eksisterer ikke, opret den "%APPDATA%\postgresql"