Váš kód by měl zabalit všechny cesty do dvojitých uvozovek, aby se odstranily mezery. Mějte na paměti cmd
interpretuje každou práci oddělenou mezerou jako nový příkaz. Musíme escapovat &
protože se stane fyzickým operátorem v dávce, nakonec je upřednostňováno použití /d
možnost při použití cd
v případě, že pocházíte z jiného písmene jednotky:
@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
Všimněte si také, že heslo nikdy nepoužíváte ve svém pg_dump
příkaz, takže to musíte také zvážit. Nejlepším postupem je upravit
%APPDATA%\postgresql\pgpass.conf
a přidat
*:5432:*:username:password
pro automatizaci této části ve vašem skriptu:
@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
Pokud dir
neexistuje, vytvořte jej "%APPDATA%\postgresql"