比如
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 NPM 的问题,powershell 没怎么用过,批处理文件里用 call npm install 调用,也就是每个前面加一个 call
|
4
imn1 2020-02-13 20:00:06 +08:00 管道啊
竖线 | 自己搜搜 “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. 你的问题描述和回复里没看到半点 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 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 @Newyorkcity #11 这里引号为了转义,讲道理只要不出现特殊符号,命令行能识别,在没有特殊要求情况下带不带引号应该没区别的
你全括起来与 一个参数括起来一段本质上执行起来没区别,你之前那段之所以错误是以为你` 和''是两码事 |
14
Tumblr 2020-02-14 10:04:37 +08:00 @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 上面的参数我是随便写的,实际上这个应用没有这个启动参数。 |