相关疑难解决方法(0)

通过重新格式化现有文件名重命名文件 - 将占位符替换为与-replace运算符一起使用的替换字符串

我有一些像这样的视频文件: VideoName_s01e01.mp4季节和剧集是变量.我想在s??和之间添加一个下划线("_")e??.

我一直在使用进行重命名,我有一个起点:

GCI $path -filter '*_s??e??*' -rec |  Ren -new { $_.name -replace '_s[0-9][0-9]', '_s[0-9]_[0-9]_' } -passthru    
Run Code Online (Sandbox Code Playgroud)

这实际上重命名了我的文件VideoName_s[0-9]_e[0-9].mp4.

基本上,我正在寻找s??e??我不知道如何在替换部分中使它们成为变量的字符.

我认为最好的方法是:

  1. 找到e??s??(我们称之为X)的位置.
  2. 将字符串拆分为X-3.
  3. 将字符串连接_到中间的" ".

powershell replace rename file

2
推荐指数
1
解决办法
449
查看次数

对于 PowerShell cmdlet,我可以始终将脚本块传递给字符串参数吗?

我正在查看 PowerShell 的Rename-Itemcmdlet的文档,有一个这样的例子。

Get-ChildItem *.txt | Rename-Item -NewName { $_.name -Replace '\.txt','.log' }
Run Code Online (Sandbox Code Playgroud)

此示例说明如何使用 Replace 运算符重命名多个文件,即使 NewName 参数不接受通配符也是如此。

此命令将当前目录中的所有 .txt 文件重命名为 .log。

该命令使用 Get-ChildItem cmdlet 获取当前文件夹中具有 .txt 文件扩展名的所有文件。然后,它使用管道运算符 (|) 将这些文件发送到 Rename-Item 。

NewName 的值是在将值提交给 NewName 参数之前运行的脚本块。

注意最后一句话:

NewName 的值是在将值提交给 NewName 参数之前运行的脚本块

实际上NewName是一个字符串:

[-NewName] <String>
Run Code Online (Sandbox Code Playgroud)

那么这是否意味着当所需的参数类型是字符串时,我总是可以使用脚本块?

parameters powershell cmdlets scriptblock delay-bind

2
推荐指数
2
解决办法
1127
查看次数