【问题标题】:equivalent of (dir/b > files.txt) in PowerShell相当于 PowerShell 中的 (dir/b > files.txt)
【发布时间】:2011-07-29 01:06:59
【问题描述】:
dir/b > files.txt

我想必须在 PowerShell 中完成以保留 unicode 符号。

【问题讨论】:

标签: powershell dir


【解决方案1】:
Get-ChildItem | Select-Object -ExpandProperty Name > files.txt

或更短:

ls | % Name > files.txt

但是,您可以在cmd 中轻松地做同样的事情:

cmd /u /c "dir /b > files.txt"

/u 开关告诉cmd 将重定向到文件的内容以 Unicode 格式写入。

【讨论】:

  • PSH: ńóręąśóń -> ńóręąśóń CMD: ńóręąśóń -> ä˘r©Ą˘ä 更改字体不起作用。
  • 在屏幕上看起来没问题,但在文件中却不行。
  • Przemysław:如果您希望将内容重定向到文件以使用 Unicode 而不是遵循旧代码页,请使用 cmd /u 启动 cmd
【解决方案2】:

Get-ChildItem 实际上已经有一个相当于dir /b 的标志:

Get-ChildItem -name(或dir -name

【讨论】:

  • 不错。还不知道。我通常走“生产对象,投射到有用的东西”的路线。
【解决方案3】:

简单地说:

dir -Name > files.txt

【讨论】:

  • 你真的应该为此添加一些参考或文档或更好地解释它
  • 抱歉,其他帖子似乎也没有提供文档。无论如何,我无法为我的答案获得适当的文档,但我将其用作“相当于 dir /b > files.txt”,效果很好。
  • 所以如果每个人都跳桥,那你也可以这样做吗?你应该只关心自己作品的质量,而不是和别人比较。我们正在提供技术解决方案,根据行业标准的性质,在最少的情况下,这些解决方案总是需要某种解释、阐述和参考。真的很简单,你不想这样做,这很好,但不要指望你的答案会受到高质量的关注或总体上会受到好评。这是为了帮助你,而不是相互指责,接受建设性的建议,不要争吵或为它辩护。
  • 感谢您的评论和善意,先生。然而,这不是因为我不想提供它,而是它是迄今为止我能提供的最好的。我一直在寻找合适的文档,不幸的是,无法获得。没有一个,答案充其量只是破解,但是,嘿,如果我看到每个人都从桥上跳下来,这是下到那里但不知何故站起来的唯一方法,那么值得一试。我只会跳得有点不同,在我看来这更有效率。如果我能亲身参与,我会在未来提供适当的参考。
  • 我真的希望我的评论没有显得傲慢,因为这离我提供建设性反馈的意图最远。但我会说,如果你有降落伞,或者认为你可以站起来,一定要跳起来;)现在严肃地说,它是为了帮助你提供更好的信息,并给跟随它的人灌输信心,仅此而已,如果您找到它,请返回并更新您的答案,因为人们会在某个时候遇到它,如果他们可以从中学习会很棒。毕竟在某些时候你必须以某种方式自己学习。
【解决方案4】:

在 PSH 中 dir(别名为 Get-ChildItem)为您提供对象(如 another answer 中所述),因此您需要选择所需的属性。使用Select-Object(别名select)创建具有原始对象属性子集的自定义对象(或可以添加其他属性)。

但是在格式化阶段这样做可能是最简单的

dir | ft Name -HideTableHeaders | Out-File files.txt

ftformat-table。)

如果您想在files.txt 中使用不同的字符编码(out-file 默认使用 UTF-16)使用-encoding 标志,您也可以附加:

dir | ft Name -HideTableHeaders | Out-File -append -encoding UTF8 files.txt

【讨论】:

  • 嗨,理查德。你能告诉我为什么该代码在每个项目之间返回一个空行吗?
  • @NickRulez:“在我的机器上工作”。 Format-Table 将用空格填充到指定宽度(默认为当前会话的宽度):可以吗?使用% {$_.Name} (% = foreach-object) 而不是格式化表格可以避免这种情况。
  • 感谢您的回复。 :) 如果我使用 foreach-object 一切正常。 ft 的输出是正确的。当我通过管道输出文件时,问题就出现了。在这种情况下,我有一个空行,然后是文件名,另一个空行,文件名等等。我不知道如何检查当前会话的宽度。
  • 感谢“全图”的回答。它出来 - 编码标志是不需要的。
  • 更新。我正在从 powershell ise 编辑器运行代码。如果我从命令行运行它,除了文件的第一行之外,我没有空行。
【解决方案5】:

由于 powershell 处理对象,因此您需要指定要如何处理管道中的每个对象。

此命令将仅打印每个对象的名称:

dir | ForEach-Object { $_.name }

【讨论】:

  • 您忘记添加 | Out-File files.txt,但我是从第二个答案中得到的。谢谢。
【解决方案6】:

刚刚发现这篇很棒的帖子,但子目录也需要它:

DIR /B /S >somefile.txt

使用:

Get-ChildItem -Recurse | Select-Object -ExpandProperty Fullname | Out-File Somefile.txt

或短版:

ls | % fullname > somefile.txt

【讨论】:

    【解决方案7】:

    我正在使用:

    (dir -r).FullName > somefile.txt
    

    并带有*.log的过滤器:

    (dir -r *.log).FullName > somefile.txt
    

    注意:

    dir         is equal to `gci` but fits the naming used in cmd
    -r          recursive (all subfolders too)
    .FullName   is the path only
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-01
      • 2016-08-25
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 2023-02-03
      • 1970-01-01
      相关资源
      最近更新 更多