设置环境变量并在一行中执行命令的最佳方法

时间:2018-07-31 14:57:56

标签: windows postgresql cmd environment-variables command-line-interface

我想使用PostGreSQL pg_dump命令和以下命令行进行备份:

"<c:\Program Files\PostgreSQL\9.6\bin\pg_dump>" -h localhost -p 5432 -d test_backup_bat -U user -f D:\destination_backup\test.backup

但是我需要先将PGPASSWORD设置为环境变量以执行备份命令

PGPASSWORD=mypassword

如何仅通过一个命令行将其添加到Windows CLI中?

2 个答案:

答案 0 :(得分:1)

SET PGPASSWORD=mypasssword

要验证:echo %PGPASSWORD%

答案 1 :(得分:1)

设置变量并在批处理文件或命令行的同一行内使用它可能是“棘手的”,因为在设置变量之前已解析了完整的行/命令。

但是,在您的情况下,您不需要执行任何特殊操作,因为除了设置变量外,您无需在命令中使用变量。 pg_dump仅从其自身的环境块中读取环境变量的内容,该环境块是从父cmd进程继承的。如果父进程已定义了变量,那么pg_dump可以从其自己的副本中读取它。

因此,您只需要在同一行中包含两个命令(一个用于设置变量,一个用于启动新进程),一个接一个地执行。这是通过&运算符完成的:

set "PGPASSWORD=myPassword" & "c:\Program Files\PostgreSQL\9.6\bin\pg_dump" -h localhost -p 5432 -d test_backup_bat -U user -f D:\destination_backup\test.backup