首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PowerShell和带管道的cmd的问题?

PowerShell和带管道的cmd的问题?
EN

Stack Overflow用户
提问于 2018-09-27 06:12:27
回答 1查看 0关注 0票数 0

我有这个命令在powershell上工作正常

Compare-Object(Get-Content“tex1.txt”)(Get-Content“tex2.txt”)| Where-Object {$ _。SideIndicator -eq“<=”} | 选择inputobject | ft -hidetableheaders

我试图通过这样做在cmd中运行:

powershell -Command“&{Compare-Object(Get-Content”tex1.txt“)(Get-Content”tex2.txt“)| Where-Object {$ _. SideIndicator -eq”<=“} | select inputobject | ft -hidetableheaders}”

但它说的是:名称,目录或卷语法不正确(是西班牙语,所以我不知道确切的翻译)

我认为问题是管道,因为在管道之前运行所有内容:Compare-Object(Get-Content“tex1.txt”)(Get-Content“tex2.txt”)工作原理

PD:我也尝试在管道前写^但我还没有成功。

先谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2018-09-27 15:14:04

eryksun指出你的问题是你没有逃避嵌入式"字符。在整个"..."字符串中,这会导致cmd.exe看到多个字符串,包括它认为不带引号的部分,这会导致特殊字符出现问题,例如|<- 它们永远不会到达PowerShell

嵌套双引号字符串cmd.exe是棘手的业务:

  • cmd.exe快乐,你需要加倍嵌入的"字符。
  • 另外,要powershell.exe快乐,你需要 - \去掉这些字符。

简而言之:内部"字符。必须逃脱\""(原文如此)。

也就是说,你可以经常逃脱而不需要嵌入双引号

  • 您的字符串中可能存在根本不需要引用的参数,例如text1.txttext2.txt
  • 您也可以在整个命令字符串中使用single -quoting('...'),它不需要转义; 请注意,从PowerShell的角度来看,这些字符串是字符串文字

把它们放在一起:

代码语言:javascript
复制
powershell -Command "Compare-Object (Get-Content tex1.txt) (Get-Content tex2.txt) | Where-Object {$_.SideIndicator -eq '<='} | select inputobject |  ft -hidetableheaders"

请注意,我还删除了& { ... }您的命令,因为没有必要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档