比如
npm install
npm run build
显然,要等待 第一条语句 npm install
执行完成 才继续执行第二条
但是一个 .bat 文件,双击运行后 npm install 执行完成会导致窗口直接退出,第二条语句不执行。
如果使用
start npm install
start npm run build
则第一条命令打开一个 npm 窗口开始执行,就认为自己执行完了,然后开始执行下一条。但npm install
其实还没整完。。
谢谢
1
chenbojian 2020-02-13 19:45:52 +08:00
为什么 powershell 的标题里还出现 bat,你是不是不知道什么是.ps1
|
2
hljjhb 2020-02-13 19:53:48 +08:00 via Android
powershell 大法好,摆脱 cmd 保平安
|
3
classyk 2020-02-13 19:59:24 +08:00 via iPhone 1
NPM 的问题,powershell 没怎么用过,批处理文件里用 call npm install 调用,也就是每个前面加一个 call
|
4
imn1 2020-02-13 20:00:06 +08:00 1
管道啊
竖线 | 自己搜搜 “powershell 管道符” |
5
Newyorkcity OP @chenbojian
@hljjhb @classyk @imn1 mvn clean package ` `-DLOG_ROOT=C:\Users\Administrator\Documents\Scuwall\backendlog` ` `-Dspring.profiles.active=prod` 请问几位知道 ps1 中如何换行么?我网上一搜都是说用 反引号。。我就这么用的 后面两行 -D 打头的要作为 mvn 命令的参数 我看网上的说法也要用反引号把它们转义 我现在用这个样子的话最后那一行还是没有被视为 mvn 命令的参数,而是报错说 powershell 没有 `-Dspring.profiles.active=prod` 这样的命令 谢谢 |
6
imn1 2020-02-13 20:20:06 +08:00
你这没有转义需求,那就不用转义啦,参数里面有特殊符号才需要转义,例如参数里面有双引号或者管道符之类
|
7
Tumblr 2020-02-13 20:23:44 +08:00 1
1. 你的问题描述和回复里没看到半点 PowerShell 的影子;
2. PowerShell 的换行是 grave (重音符号,即 1 前面那个); 3. PowerShell 本身就是顺序执行的脚本语言,如果启动某个程序,用 cmdlet `Start-Process`,加参数 -Wait 可以等待执行。 |
8
Newyorkcity OP @imn1 额。。如果不转义的话报
Unknown lifecycle phase ".profiles.active=prod" 如果朋友你不是 java 开发的话。。这就相当于这条命令被这么理解: mvn clean package .profiles.active=prod ..... 哎。真的是让人头大,那么是要转义什么部分呢? |
9
Newyorkcity OP @Tumblr 谢谢解答。但 powershell 官网说它功能强大,所以学习起来也要更多投入,我现在不想深入这个。能麻烦您再解答一下我更新的问题么,在八楼。
|
10
CallMeReznov 2020-02-13 20:35:33 +08:00 1
mvn clean package `
'-DLOG_ROOT=C:\Users\Administrator\Documents\Scuwall\backendlog` -Dspring.profiles.active=prod' |
11
feilong 2020-02-13 22:04:35 +08:00 via Android
start 是个单独的命令,有参数设置等待的
|
12
Newyorkcity OP @CallMeReznov 谢谢你的解答,可以再请教一下你是如何推断使用引号括住的范围的吗?
比如我接下来要 java -jar -DLOG_ROOT=C:\Users\Administrator\Documents\Scuwall\backendlog -Dspring.profiles.active=prod xxx.jar 请问如何推断引号应该从那里括到那里呢? 是 引号开始 -jar .... xxx.jar 引号结束 还是 -jar 引号开始 ...... 引号结束 xxx.jar 虽然一个一个尝试过来总能试出来。。但其中的规则可以麻烦您讲一下么? |
13
CallMeReznov 2020-02-13 23:02:05 +08:00 1
@Newyorkcity #11 这里引号为了转义,讲道理只要不出现特殊符号,命令行能识别,在没有特殊要求情况下带不带引号应该没区别的
你全括起来与 一个参数括起来一段本质上执行起来没区别,你之前那段之所以错误是以为你` 和''是两码事 |
14
Tumblr 2020-02-14 10:04:37 +08:00 1
@Newyorkcity #7 那个……可能上面有回答者在我的 block list 里了,你的这一条回复我看到的是 7 楼,8 楼是 feilong 回答的「 start 是个单独的命令,有参数设置等待的」,上面有你提到的「那么要转义什么部分呢」应该是有上下文的,所以……我不知道该回答哪个。 😂
单独说转义的话,PowerShell 里可以直接在需要转义的字符前添加`( grave )就可以了,比如: Start-Process -FilePath '/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app' -ArgumentList "--mode `"quiet`"" P.S 上面的参数我是随便写的,实际上这个应用没有这个启动参数。 |