【问题标题】:Getting certain file names using a powershell script in a folder使用文件夹中的 powershell 脚本获取某些文件名
【发布时间】:2020-11-03 11:16:54
【问题描述】:

我是 powerscript 的新手,今天第一次尝试。熟悉 bash 脚本,但这是不同的。 我有一个大约 450 个文件的文件夹。我需要获取其中大约 30 个的名称,希望将其推送到一个文本文件中。

这是我目前所拥有的。我能够得到一个包含所有文件的文本文件,但不是一个只包含我输入的数字的文本文件。我还注意到 lineNumbers.txt 直到最后都没有创建,所以我收到一个错误说它可以没找到。

请随时推荐您所做的修复参考,以便我学习。

$input = Read-Host -Prompt 'which file numbers do you need? Separate by commas' 

$input -split "(,)"

echo $input
Read-Host 

cd ./
dir -n > $file
(gc $file | select -Skip 1) | sc $file > lineNumbers.txt  
echo 'line numbers'

Read-Host

Foreach ($i in $input)

{

echo $i

(Get-Content -Path .\lineNumbers.txt -TotalCount $i)[-1] >> resultlines.txt
 

}

提前致谢!

【问题讨论】:

  • 你想要获取的这 30 个文件名是否有一个共同的模式,如果是这样,那么我将通过 python 使用regex
  • 但在回答之前我想知道这 30 个文件的名称是什么。如果你能分享这 30 个文件中存在的相似性就更好了
  • 不要将变量分配为$input$input 是 Powershell 中的自动变量 (msdn.microsoft.com/en-us/powershell/reference/5.1/…)
  • @mishx 文件都是图片名。 3 个不同的前缀(DSC、R000、L 000),每个前缀后面跟着 4 个不同的数字,每个末尾都有 final review 字样。也都是jpg。想在任何一组随机文件上进行这项工作。基本上,当按名称排序时,我会让一个外行通过并选择数字 4、7、8,然后我只需要输入 4、7、8,它就会向我显示这些文件的名称文本文件。使用 dir 时,返回的文件按此顺序返回。 .
  • @itchydon 谢谢你的信息,第一个脚本,所以我很感激任何更正

标签: powershell shell automation scripting


【解决方案1】:

一个更短的选择:

$numbers = Read-Host -Prompt 'which file numbers do you need? Separate by commas'
$files = Get-ChildItem "Filepath" | Sort-Object -Property Name
$numbers.Split(",") | Foreach {$files[$_].Fullname >>resultlines.txt}

【讨论】:

  • 这是完美的。将文件路径更改为 ./ 因为它意味着放置在目录中并且它可以工作。这将使事情变得容易得多,谢谢。我将不得不研究 get-childitem、sort-object 以及您在 for each 中使用下划线的方式。一个问题。当它写入名称时,它会写入文件的全名:Pc/mainfolder/folder/filename。有没有办法删除这第一部分并只有文件名?感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 2018-04-08
  • 1970-01-01
  • 2012-06-08
相关资源
最近更新 更多