运行 批处理文件中的命令
Running Commands in Batch FIle
我正在尝试创建批处理文件以运行启动一些微服务和数据库
1 FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :1000') DO @ECHO TaskKill.exe /PID %%P
2 FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :1001') DO @ECHO TaskKill.exe /PID %%P
3 FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :5432') DO @ECHO TaskKill.exe /PID %%P
4 start cd "C:\Program Files\PostgreSQL\bin\" & pg_ctl.exe -D "c:\Program Files\PostgreSQL\data" start
@REM to start service
5 start javaw -jar -Dserver.port=1000 text-annotation-tool-1.0-SNAPSHOT.jar
第1至3行和第5行在注释第4行执行时正确执行。
第 4 行是在新的提示符下启动 Postgres 服务器(因为目录更改)。我认为问题在于我使用引号的方式。第 4 行开头和结尾的 'start' 有不同的用途。
此外,如果我在不同的提示中执行第 4 行,执行后如何关闭提示(相当于 nohup)
有两个错误:您不能"pass" cd
启动命令。 start
有一个怪癖,可以将第一个引用的参数解释为新的 window 的标题。所以 start "C:\Program Files\PostgreSQL\bin\" ...
不起作用,您需要提供一个虚拟的 window 标题。 &
好像也错了
所以你需要:
start "Postgres Server" "C:\Program Files\PostgreSQL\bin\pg_ctl.exe" -D "c:\Program Files\PostgreSQL\data" start
由于提供了 pg_ctl.exe
的完整路径,因此不需要 cd
。
但是如果要为新进程定义默认目录,就得用/D
参数:
start "Postgres Server" /D "C:\Program Files\PostgreSQL\bin" pg_ctl.exe -D "c:\Program Files\PostgreSQL\data" start
无关,但是:将 Postgres 数据目录放入 c:\Program Files\
是一个非常糟糕的主意。该目录出于某种目的具有特殊权限。您应该使用 %ProgramData%
或 %AppData%
而不是
我正在尝试创建批处理文件以运行启动一些微服务和数据库
1 FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :1000') DO @ECHO TaskKill.exe /PID %%P
2 FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :1001') DO @ECHO TaskKill.exe /PID %%P
3 FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :5432') DO @ECHO TaskKill.exe /PID %%P
4 start cd "C:\Program Files\PostgreSQL\bin\" & pg_ctl.exe -D "c:\Program Files\PostgreSQL\data" start
@REM to start service
5 start javaw -jar -Dserver.port=1000 text-annotation-tool-1.0-SNAPSHOT.jar
第1至3行和第5行在注释第4行执行时正确执行。
第 4 行是在新的提示符下启动 Postgres 服务器(因为目录更改)。我认为问题在于我使用引号的方式。第 4 行开头和结尾的 'start' 有不同的用途。
此外,如果我在不同的提示中执行第 4 行,执行后如何关闭提示(相当于 nohup)
有两个错误:您不能"pass" cd
启动命令。 start
有一个怪癖,可以将第一个引用的参数解释为新的 window 的标题。所以 start "C:\Program Files\PostgreSQL\bin\" ...
不起作用,您需要提供一个虚拟的 window 标题。 &
好像也错了
所以你需要:
start "Postgres Server" "C:\Program Files\PostgreSQL\bin\pg_ctl.exe" -D "c:\Program Files\PostgreSQL\data" start
由于提供了 pg_ctl.exe
的完整路径,因此不需要 cd
。
但是如果要为新进程定义默认目录,就得用/D
参数:
start "Postgres Server" /D "C:\Program Files\PostgreSQL\bin" pg_ctl.exe -D "c:\Program Files\PostgreSQL\data" start
无关,但是:将 Postgres 数据目录放入 c:\Program Files\
是一个非常糟糕的主意。该目录出于某种目的具有特殊权限。您应该使用 %ProgramData%
或 %AppData%
而不是