
比如
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 上面的参数我是随便写的,实际上这个应用没有这个启动参数。 |