gpt4 book ai didi

windows - 将文件夹中的文件名输出到文本文件

转载 作者:行者123 更新时间:2023-12-05 02:32:21 24 4
gpt4 key购买 nike

使用 Windows 命令提示符或 Windows PowerShell,如何将单个目录中的所有文件名输出到一个文本文件,不带文件扩展名?

在命令提示符中,我使用的是:

dir /b > files.txt

结果

01 - Prologue.mp3
02 - Title.mp3
03 - End.mp3
files.txt

期望的输出

01 - Prologue
02 - Title
03 - End

请注意“dir/b > files.txt”命令包含文件扩展名并将文件名放在底部。

在不使用批处理文件的情况下,是否有干净的命令提示符或 PowerShell 命令可以执行我正在寻找的操作?

最佳答案

在 PowerShell 中:

# Get-ChildItem (gci) is PowerShell's dir equivalent.
# -File limits the output to files.
# .BaseName extracts the file names without extension.
(Get-ChildItem -File).BaseName | Out-File files.txt

注意:您也可以在 PowerShell 中使用 dir,它只是 Get-ChildItem 的别名。但是,为避免与 cmd.exe 的内部 dir 命令混淆(后者具有根本不同的语法),最好使用 PowerShell 原生别名 gci。要查看为 Get-ChildItem 定义的所有别名,请运行
Get-Alias -Definition Get-ChildItem

请注意,使用 PowerShell 的 > 重定向运算符 - 它实际上是
Out-File 的别名cmdlet - 还会导致在枚举中意外包含输出 files.txt,如 cmd.exe 和类似 POSIX 的 shell,例如 bash,因为目标文件是首先创建的。

相比之下,使用带有 Out-File 的管道(或 Set-Content,用于文本输入)会延迟文件创建,直到此单独管道段中的 cmdlet 被初始化[1] - 因为第一段中的文件枚举根据定义已经在此时完成,由于 Get-ChildItem调用包含在 (...) 中,输出文件包含在枚举中。

另请注意,属性访问 .BaseName 已应用于(Get-ChildItem ...) 返回的所有 文件,这很方便地导致由于名为 member-access enumeration 的功能,在返回单个文件属性值的数组中.

字符编码说明:

  • 在 Windows PowerShell 中,Out-File/> 创建“Unicode”(UTF-16LE) 文件,而 Set-Content 使用系统的遗留 ANSI 代码页。

  • 在 PowerShell (Core) 7+ 中,无 BOM UTF-8 是一致的默认值。

-Encoding 参数可用于显式控制编码。


[1] 在 Set-Content 的情况下,它实际上被延迟得更久,即直到收到第一个输入对象,但这是一个不应该的实现细节值得信赖。

关于windows - 将文件夹中的文件名输出到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71280624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com