Uw code moet alle paden tussen dubbele aanhalingstekens plaatsen om witruimte te elimineren. Onthoud cmd
interpreteert elk door spaties gescheiden werk als een nieuw commando. We moeten ontsnappen aan de &
aangezien het een fysieke operator in batch zal worden, verdient het ten slotte de voorkeur om de /d
. te gebruiken optie bij gebruik van cd
voor het geval je van een andere stationsletter komt:
@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
Merk ook op dat je nooit het wachtwoord in je pg_dump
. gebruikt commando, dus daar moet je ook rekening mee houden. Best practice is om te bewerken
%APPDATA%\postgresql\pgpass.conf
en voeg
. toe*:5432:*:username:password
om dat deel in je script te automatiseren:
@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
Als de dir
bestaat niet, maak het aan "%APPDATA%\postgresql"