Ihr Code sollte alle Pfade in doppelte Anführungszeichen setzen, um Leerzeichen zu eliminieren. Denken Sie an cmd
interpretiert jede durch Leerzeichen getrennte Arbeit als neuen Befehl. Wir müssen &
maskieren Da es im Stapel zu einem physischen Operator wird, wird schließlich die Verwendung von /d
bevorzugt Option bei Verwendung von cd
falls Sie von einem anderen Laufwerksbuchstaben kommen:
@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
Beachten Sie auch, dass Sie niemals das Passwort in Ihrem pg_dump
verwenden Befehl, also müssen Sie das auch berücksichtigen. Best Practice ist das Bearbeiten
%APPDATA%\postgresql\pgpass.conf
und hinzufügen
*:5432:*:username:password
um diesen Teil in Ihrem Skript zu automatisieren:
@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
Wenn das dir
nicht existiert, erstellen Sie es "%APPDATA%\postgresql"