请问 powershell(windows server 运维时)如何串行地顺序执行一个(脚本)文件里的命令? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Newyorkcity
V2EX    问与答

请问 powershell(windows server 运维时)如何串行地顺序执行一个(脚本)文件里的命令?

  •  
  •   Newyorkcity 2020-02-13 19:39:10 +08:00 3082 次点击
    这是一个创建于 2134 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如

    npm install npm run build 

    显然,要等待 第一条语句 npm install 执行完成 才继续执行第二条

    但是一个 .bat 文件,双击运行后 npm install 执行完成会导致窗口直接退出,第二条语句不执行。

    如果使用

    start npm install start npm run build 

    则第一条命令打开一个 npm 窗口开始执行,就认为自己执行完了,然后开始执行下一条。但npm install其实还没整完。。

    谢谢

    14 条回复    2020-02-14 10:04:37 +08:00
    chenbojian
        1
    chenbojian  
       2020-02-13 19:45:52 +08:00
    为什么 powershell 的标题里还出现 bat,你是不是不知道什么是.ps1
    hljjhb
        2
    hljjhb  
       2020-02-13 19:53:48 +08:00 via Android
    powershell 大法好,摆脱 cmd 保平安
    classyk
        3
    classyk  
       2020-02-13 19:59:24 +08:00 via iPhone   1
    NPM 的问题,powershell 没怎么用过,批处理文件里用 call npm install 调用,也就是每个前面加一个 call
    imn1
        4
    imn1  
       2020-02-13 20:00:06 +08:00   1
    管道啊
    竖线 |
    自己搜搜 “powershell 管道符”
    Newyorkcity
        5
    Newyorkcity  
    OP
       2020-02-13 20:08:24 +08:00
    @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` 这样的命令

    谢谢
    imn1
        6
    imn1  
       2020-02-13 20:20:06 +08:00
    你这没有转义需求,那就不用转义啦,参数里面有特殊符号才需要转义,例如参数里面有双引号或者管道符之类
    Tumblr
        7
    Tumblr  
       2020-02-13 20:23:44 +08:00   1
    1. 你的问题描述和回复里没看到半点 PowerShell 的影子;
    2. PowerShell 的换行是 grave (重音符号,即 1 前面那个);
    3. PowerShell 本身就是顺序执行的脚本语言,如果启动某个程序,用 cmdlet `Start-Process`,加参数 -Wait 可以等待执行。
    Newyorkcity
        8
    Newyorkcity  
    OP
       2020-02-13 20:24:57 +08:00
    @imn1 额。。如果不转义的话报
    Unknown lifecycle phase ".profiles.active=prod"
    如果朋友你不是 java 开发的话。。这就相当于这条命令被这么理解:

    mvn clean package .profiles.active=prod .....

    哎。真的是让人头大,那么是要转义什么部分呢?
    Newyorkcity
        9
    Newyorkcity  
    OP
       2020-02-13 20:29:15 +08:00
    @Tumblr 谢谢解答。但 powershell 官网说它功能强大,所以学习起来也要更多投入,我现在不想深入这个。能麻烦您再解答一下我更新的问题么,在八楼。
    CallMeReznov
        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'
    feilong
        11
    feilong  
       2020-02-13 22:04:35 +08:00 via Android
    start 是个单独的命令,有参数设置等待的
    Newyorkcity
        12
    Newyorkcity  
    OP
       2020-02-13 22:51:29 +08:00
    @CallMeReznov 谢谢你的解答,可以再请教一下你是如何推断使用引号括住的范围的吗?

    比如我接下来要

    java -jar
    -DLOG_ROOT=C:\Users\Administrator\Documents\Scuwall\backendlog
    -Dspring.profiles.active=prod
    xxx.jar

    请问如何推断引号应该从那里括到那里呢? 是 引号开始 -jar .... xxx.jar 引号结束
    还是 -jar 引号开始 ...... 引号结束 xxx.jar

    虽然一个一个尝试过来总能试出来。。但其中的规则可以麻烦您讲一下么?
    CallMeReznov
        13
    CallMeReznov  
       2020-02-13 23:02:05 +08:00   1
    @Newyorkcity #11 这里引号为了转义,讲道理只要不出现特殊符号,命令行能识别,在没有特殊要求情况下带不带引号应该没区别的
    你全括起来与 一个参数括起来一段本质上执行起来没区别,你之前那段之所以错误是以为你` 和''是两码事
    Tumblr
        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 上面的参数我是随便写的,实际上这个应用没有这个启动参数。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     929 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:06 PVG 06:06 LAX 14:06 JFK 17:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86