【发布时间】:2014-08-08 16:09:30
【问题描述】:
我需要一个 PowerShell 脚本来导出仅没有文件扩展名的文件名列表,然后输出到每个子文件夹单独的文本文件。我需要在脚本中指定一个父目录,然后 PowerShell 需要启动并使用子文件夹的名称作为文本文件名(没有空格和小写)为每个子文件夹创建一个单独的文本文件。然后在创建的每个基于子文件夹的文本文件中,有一个文件名列表,这些文件名包含在每个子文件夹中,没有文件扩展名。
$files = Get-ChildItem -Path "M:\Music" -Recurse `
| Where-Object {`
$_.DirectoryName -notlike "*Other\Children" -and `
$_.DirectoryName -notlike "*Other\Numbers" -and `
$_.Extension -eq ".mp3"}
#Now loop through all the subfolders
$folder = $files.PSisContainer
ForEach ($Folder in $files)
{
$ParentS = ($_.Fullname).split("\")
$Parent = $ParentS[@($ParentS.Length - 2)]
Select-Object BaseName > C:\Users\me\Documents\$parent.txt
}
好的,花了一些时间,脚本在下面添加到之前的尝试。这次我似乎非常接近,但是最后写入文本文件不是100%,我之前使用的是Out-File,它在每个文本文件的底部留下了一个我不想要的空白行。为什么我切换到 [system.io.file]::WriteAllText 和 [system.io.file]::AppendAllText,但是它们中的每一个都有其不符合我需要的特质。在文本文件中,我需要一列中没有空行的文件列表。
$files = Get-ChildItem -Path "M:\Music" -Recurse `
| Where-Object {`
$_.DirectoryName -notlike "*Other\Children" -and `
$_.DirectoryName -notlike "*Other\Numbers" -and `
$_.Extension -eq ".mp3"}
#Now loop through all the subfolders
$folder = $files.Directory
ForEach ($Folder in $files)
{
$ParentS = ($folder.Fullname).split("\")
$ParentT = $ParentS[(@($ParentS.Length - 2))]
$Parent = $ParentT.replace(' ','')
[system.io.file]::WriteAllText("C:\Users\me\Documents\$parent.txt", $folder.BaseName, [System.Text.Encoding]::Unicode)
}
【问题讨论】:
-
本网站不用于“请求脚本”。向我们展示您尝试了什么,失败的地方以及无效的地方。然后,我们可以尝试为您指明正确的方向或查看脚本并提供一些提示。
-
这是上次的情况,我有个需求,有人给了我一个脚本。好的,稍后我会在电脑前分享脚本。
-
好吧,如果您查看一些“高质量”问题(例如 stackoverflow.com/questions/11227809/…),这可以让您对本网站的用途有一个很好的了解。
-
这是我到目前为止所拥有的,但似乎无法解决如何根据不同的文件夹将文件名列出到不同的文本文件。我在上面添加了我的脚本
-
好的,在这上面花了一些时间,脚本在下面添加到之前的尝试中。这次我似乎非常接近,但是最后写入文本文件不是100%,我之前使用的是Out-File,它在每个文本文件的底部留下了一个我不想要的空白行。为什么我切换到 [system.io.file]::WriteAllText 和 [system.io.file]::AppendAllText,但是它们中的每一个都有其不符合我需要的特质。在文本文件中,我需要一列中没有空行的文件列表。
标签: powershell powershell-2.0 powershell-3.0 powershell-ise