【问题标题】:Pipeline in Windows batch backquoteWindows批处理反引号中的管道
【发布时间】:2013-02-19 03:55:59
【问题描述】:

我想看看如何在 Windows 批处理中使用或转义管道,就像在 Unix shell 中一样。假设我有这个:

FOR /F "usebackq delims=" %i IN (`date /t`) DO @set TODAY=%i
echo %TODAY%

这将为我提供 TODAY 变量中的日期。但我想让这 1 个或多个管道正常工作:

FOR /F "usebackq delims=" %i IN (`date /t | cut -c 1-3`) DO @set TODAY=%i

cmd.exe 报错这样我觉得我需要一个转义机制?

| was unexpected at this time.

那么,这可行吗?如何?请注意,我在 PATH 中有完整的 gnu coreutils 和大多数好东西,所以我可以使用 cut 作为示例。

【问题讨论】:

  • 我想如果 FOR 真的可以做管道,我会感到震惊。在 nix shell 中,这些东西是模块化的构建块,但在 cmd.exe 中,一切都只是堆积起来的一个疣。反引号在 cmd.exe 的其他任何地方都可以工作吗?
  • 这只是一个逃生问题。我不知道反引号是否适用于 FOR。在 cmd.exe 中可能只有 FOR :)

标签: windows shell batch-file


【解决方案1】:

转义字符是^

这是命令,最后将set 替换为echo 以使其非常友好。

FOR /F "usebackq delims=" %i IN (`date /t ^| cut -c 1-3`) DO @echo TODAY=%i
TODAY=18/

(YMMV,我的日期是法语语言环境)

date /t
18/02/2013

【讨论】:

  • 哇!我正在写这个。
猜你喜欢
  • 2010-10-06
  • 1970-01-01
  • 2011-07-11
  • 2023-04-02
  • 1970-01-01
  • 2021-12-11
  • 2018-03-03
  • 1970-01-01
相关资源
最近更新 更多