Votre code doit envelopper tous les chemins entre guillemets doubles pour éliminer les espaces. Gardez à l'esprit cmd
interprète chaque travail délimité par un espace comme une nouvelle commande. Nous devons échapper au &
comme il deviendra un opérateur physique en batch, enfin il est préférable d'utiliser le /d
option lors de l'utilisation de cd
au cas où vous venez d'une autre lettre de lecteur :
@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
Notez également que vous n'utilisez jamais le mot de passe dans votre pg_dump
commande, vous devez donc en tenir compte également. La meilleure pratique consiste à modifier
%APPDATA%\postgresql\pgpass.conf
et ajouter
*:5432:*:username:password
pour automatiser cette partie dans votre 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
Si le dir
n'existe pas, créez-le "%APPDATA%\postgresql"