攀枝花市网站建设_网站建设公司_Windows Server_seo优化
2025/12/24 4:08:42 网站建设 项目流程

问题

如何管理视频资源?最简单的手工方式:单独的MP4格式文件按一定规律重命名后,放入一个目录下。当资源超过数百个的时候,很难继续。况且就算能保证手工录入准确,也不方便。

演员 1-3位大小写字母 一或零个连字符 3-4位数字 标题

1.分析

因此,考虑使用一个数据库。首先观察键值,在录入时,有一些没有连字符 有一些用了小写 有一些演员没有写 有一些标题没有写

* MIAA207 *
* IPX647 *
* miaa-795 *

虽然外部数据中,通常直接用大写字母连字符数字,考虑数据关系,应该使用两个键分开存储便于检索。需要使用时进行拼接即可,这样对于不使用连字符的数据也很方便支持。

2.实现

分析过后,很容易判断出需要使用的特性

  • 获取目录项
  • 正则表达式捕获子表达式
  • 导出数据

在AI广泛免费使用的时代,该需求很容易会得到一段Python代码。有什么理由找一项新技术去完成呢?

  • 尽可能原生摆脱依赖,虽然当前Python环境在绝大多数平台上都是可移植的。
  • 尽可能简单实现,能快速修改复用。个人计算机操作系统几乎都提供了一个命令行环境,但是CMD、Shell等环境面向文本,在可拓展性上差强人意,添加新功能相当麻烦。
  • 探索新技术

这就是使用powershell的原因,在Windows上从Win7就附带了,新的pwsh是跨平台的。
更重要的是,它是对象模型的,命令之间传递的是带有方法的结构化数据对象。直接命令和脚本的语法是一致的,意味着编写时可以不断运行逐步修改,完成后完整命令就是一段脚本

3.完成

传统上有两个命令用于列出目录 ls dir
powershell中这两个命令输出是相同的,事实上都是 Get-ChildItem 。
man 命令可以验证这一点,ma nman 发现是 Get-Help 的别名

点击查看代码
> man dir名称Get-ChildItem语法Get-ChildItem [[-Path] <string[]>] [[-Filter] <string>]  [<CommonParameters>]Get-ChildItem [[-Filter] <string>]  [<CommonParameters>]别名gcilsdir
可以看出,不使用path参数即使用当前目录,输出了四个属性
  • Mode
  • LastWriteTime
  • Length
  • Name

管道中传递的是对象,对象成员包括属性和方法,那么检查类型成员的命令显而易见

Get-ChildItem | Get-Member

System.IO.FileInfo 类型成员很多,但只需要 Name 用于正则表达式即可。考虑这一点,看看有什么命令,虽然直接搜索带有 match 选项的命令也可以,但更方便的方式是使用搜索引擎,发现一个命令用于 根据集合的属性值从集合中选择对象
同样地, Select-Object 构造新对象 Export-Csv 导出用于数据导入 ,足够了。
Where-Object

很容易尝试出匹配出适用的文件名 Property选项指定 name 属性 Match 进行匹配,可以发现 powershell默认行为为大小写不敏感。
文档中CaseSensitiveMatchSet 使用 -CMatch 。
Get-ChildItem| where -Property name -Match "([A-Z]{3,4})-?(\d{3,4})"

下一步,根据文档用逗号分隔, @{} 表示新键值对,其中 Name 表示属性名,Expression 表示值。
直接使用AI获得结果即可。

点击查看代码
 Select-Object -Property Name,@{Name="字母段"; Expression={$matches[1]}},@{Name="数字段"; Expression={$matches[2]}}
最后一步导出,为 Export-Csv 提供输出路径即可,考虑外部兼容性,指定编码去除类型信息

-Encoding UTF8 -NoTypeInformation

列出完整命令

点击查看代码
Get-ChildItem| where -Property name -Match "([A-Z]{3,4})-?(\d{3,4})" | Select-Object -Property Name,@{Name="字母段"; Expression={$matches[1]}},@{Name="数字段"; Expression={$matches[2]}}   |Export-Csv -Path "test.csv" -Encoding UTF8 -NoTypeInformation
最后可以用Import-Csv 检查结果

Import-Csv .\test.csv

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询