Din kod bör linda alla sökvägar med dubbla citattecken för att eliminera blanksteg. Tänk på cmd
tolkar varje mellanslagsavgränsat arbete som ett nytt kommando. Vi måste undkomma &
eftersom det kommer att bli en fysisk operatör i batch, slutligen är det att föredra att använda /d
alternativet när du använder cd
om du kommer från en annan enhetsbeteckning:
@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
Observera också att du aldrig använder lösenordet i din pg_dump
kommando, så du måste tänka på det också. Bästa praxis är att redigera
%APPDATA%\postgresql\pgpass.conf
och lägg till
*:5432:*:username:password
för att automatisera den delen i ditt skript:
@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
Om dir
inte existerar, skapa den "%APPDATA%\postgresql"