为什么在这两种命令执行情况下会有不同?

埃拉波

我需要用双引号并行运行两个命令(简单的命令在我的情况下不起作用)并等待结果。但是当我这样做时,我得到了一个不同的行为,双重 qouted 执行(我的命令根本不会因为未知原因运行)。

我已经将问题简化为这个例子:

(
   start "task1" cmd /C "timeout /t 5 /nobreak > nul"
   start "task2" cmd /C ""timeout /t 8 /nobreak > nul""
) | pause

您可以看到在后一种情况下计数器会倒计时,但在第一种情况下不会

Waiting for 8 seconds, press CTRL+C to quit ...

问题:

  • 是什么导致了这两种情况之间的变化?
  • 如何避免这种改变的行为?

在我的特殊情况下:

当我运行它时,一切正常:

start "task1" cmd /C ""D:\Program Files\Alteryx\bin\AlteryxEngineCmd.exe" "^<WizardValues^> ^<Module^>D:\long path\aaa.yxwz^</Module^> ^<Value name='Drop Down (31)'^>2019-08^</Value^> ^</WizardValues^>" > outp1.txt "

当我将简单版本放入复杂版本时,执行只会失败:

(
   start "task1" cmd /C ""D:\Program Files\Alteryx\bin\AlteryxEngineCmd.exe" "^<WizardValues^> ^<Module^>D:\long path\aaa.yxwz^</Module^> ^<Value name='Drop Down (12)'^>2019-08^</Value^> ^</WizardValues^>" > outp1.txt "
   start "task2" cmd /C ""D:\Program Files\Alteryx\bin\AlteryxEngineCmd.exe" "^<WizardValues^> ^<Module^>D:\long path\bbb.yxwz^</Module^> ^<Value name='Drop Down (34)'^>2019-07^</Value^> ^</WizardValues^>" > outp2.txt "
) | pause

问题:

  • 这种行为变化与上述示例有何相似之处?
aschipfl

关于您的测试场景:

cmd /C "timeout /t 5 /nobreak > nul"重定向操作符>从托管隐藏cmd实例(运行批处理文件的代码的),所以它成为在内部执行的cmd实例。

cmd /C ""timeout /t 5 /nobreak > nul"">暴露的托管cmd实例,因此重定向执行有和内一个不接收> nul部分。
(虽然让我有点惊讶的是,由于双引号没有出现语法错误;我可以想象第二个start命令实际上收到了类似""timeout /t 5 /nobreak执行的东西,它似乎从中删除了前导"",但我不太确定。 )


关于你的特殊情况:

忘了逃跑的类似XML字符串中,刚刚逃脱外引号和重定向操作。

  • 单独运行程序:

    start "task1" cmd /C ^""D:\Program Files\Alteryx\bin\AlteryxEngineCmd.exe" "<WizardValues> <Module>D:\long path\aaa.yxwz</Module> <Value name='Drop Down (31)'>2019-08</Value> </WizardValues>" ^> "outp1.txt"^"
    
  • 在管道 ( |) 中运行程序需要双重转义,因为这里的任何一方都由cmd /S /D /c自己执行

    (
        start "task1" cmd /C ^^^""D:\Program Files\Alteryx\bin\AlteryxEngineCmd.exe" "<WizardValues> <Module>D:\long path\aaa.yxwz</Module> <Value name='Drop Down (12)'>2019-08</Value> </WizardValues>" ^^^> "outp1.txt"^^^"
        start "task2" cmd /C ^^^""D:\Program Files\Alteryx\bin\AlteryxEngineCmd.exe" "<WizardValues> <Module>D:\long path\bbb.yxwz</Module> <Value name='Drop Down (34)'>2019-07</Value> </WizardValues>" ^^^> "outp2.txt"^^^"
    ) | pause ^> nul
    

不幸的是,您不能只是省略(转义)外部引号对,因为cmd在处理它们时不是很聪明。类似于cmd /C "program.exe" "quoted string"将命令行program.exe" "quoted string留在后面的东西,这当然是无效的语法。

注意:
通常可以不使用 启动外部程序cmd /C,但在您的情况下,您使用的是输出重定向>,这是 内部的事情cmd,这就是您需要它的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Matlab中max的这两种实现方式不同?

来自分类Dev

为什么在使用GString的情况下,groovy映射键评估在类似情况下会有不同的表现?

来自分类Dev

为什么在这两种情况下,underscore.reduce的行为有所不同?

来自分类Dev

为什么这两种访问C ++映射对部分的方式不同

来自分类Dev

如何在有条件的情况下让表格单元执行两种不同的筛选?

来自分类Dev

Jabber用户下线:为什么这两种情况不同?

来自分类Dev

在这两种情况下使用哪个Neo4j端点?

来自分类Dev

为什么在这两种用法中,Node.js似乎传递不同的参数?

来自分类Dev

为什么这两种旋转方式给我不同的用户体验?

来自分类Dev

这两种执行TypeScript方法的方式有什么区别?

来自分类Dev

这两种情况有什么区别?

来自分类Dev

为什么这两种方式来比较Class对象产生不同?

来自分类Dev

为什么这两种距离转换方法会产生不同的输出?

来自分类Dev

pygame.colliderect()在这两种情况下是否都以相同的方式工作?

来自分类Dev

为什么两种情况下的输出相同?

来自分类Dev

为什么在比较浮点数的两种情况下输出都不同

来自分类Dev

如果这两种Perl书写风格有什么区别,为什么结果不同?

来自分类Dev

为什么这两种向量加法方法有所不同?

来自分类Dev

为什么两种情况下的行为不同1。int i = 1,2,3; 和第二。我 i = 1,2,3;

来自分类Dev

为什么在使用GString的情况下,groovy映射键评估在类似情况下会有不同的表现?

来自分类Dev

为什么在这两种情况下此引用的关键字不同?

来自分类Dev

为什么在这两种情况下,underscore.reduce的行为有所不同?

来自分类Dev

如何在有条件的情况下让表格单元执行两种不同的筛选?

来自分类Dev

这两种形式的SSH隧道命令有什么区别?

来自分类Dev

从Bash和Git调用时,`less`的执行情况有所不同

来自分类Dev

在这两种情况下,curl使用哪种方法进行身份验证(GET或POST)?

来自分类Dev

这两种执行TypeScript方法的方式有什么区别?

来自分类Dev

为什么这两种构造数组的不同方式会产生不同的行为?

来自分类Dev

为什么 gcc 编译器在这两种情况下表现不同?

Related 相关文章

  1. 1

    为什么Matlab中max的这两种实现方式不同?

  2. 2

    为什么在使用GString的情况下,groovy映射键评估在类似情况下会有不同的表现?

  3. 3

    为什么在这两种情况下,underscore.reduce的行为有所不同?

  4. 4

    为什么这两种访问C ++映射对部分的方式不同

  5. 5

    如何在有条件的情况下让表格单元执行两种不同的筛选?

  6. 6

    Jabber用户下线:为什么这两种情况不同?

  7. 7

    在这两种情况下使用哪个Neo4j端点?

  8. 8

    为什么在这两种用法中,Node.js似乎传递不同的参数?

  9. 9

    为什么这两种旋转方式给我不同的用户体验?

  10. 10

    这两种执行TypeScript方法的方式有什么区别?

  11. 11

    这两种情况有什么区别?

  12. 12

    为什么这两种方式来比较Class对象产生不同?

  13. 13

    为什么这两种距离转换方法会产生不同的输出?

  14. 14

    pygame.colliderect()在这两种情况下是否都以相同的方式工作?

  15. 15

    为什么两种情况下的输出相同?

  16. 16

    为什么在比较浮点数的两种情况下输出都不同

  17. 17

    如果这两种Perl书写风格有什么区别,为什么结果不同?

  18. 18

    为什么这两种向量加法方法有所不同?

  19. 19

    为什么两种情况下的行为不同1。int i = 1,2,3; 和第二。我 i = 1,2,3;

  20. 20

    为什么在使用GString的情况下,groovy映射键评估在类似情况下会有不同的表现?

  21. 21

    为什么在这两种情况下此引用的关键字不同?

  22. 22

    为什么在这两种情况下,underscore.reduce的行为有所不同?

  23. 23

    如何在有条件的情况下让表格单元执行两种不同的筛选?

  24. 24

    这两种形式的SSH隧道命令有什么区别?

  25. 25

    从Bash和Git调用时,`less`的执行情况有所不同

  26. 26

    在这两种情况下,curl使用哪种方法进行身份验证(GET或POST)?

  27. 27

    这两种执行TypeScript方法的方式有什么区别?

  28. 28

    为什么这两种构造数组的不同方式会产生不同的行为?

  29. 29

    为什么 gcc 编译器在这两种情况下表现不同?

热门标签

归档