如何使用 Rename-Item 动态更改文件名?
How do i dynamically change file-names with Rename-Item?
我正在尝试使用 cmdlet Rename-Item
更改文件夹中多个文件的文件名。
这是我的文件的例子(现实中还有更多的文件):
1_File1.sql
1_File2.sql
1_File3.sql
2_File4.sql
3_File5_NOT_DONE.sql
3_File6_NOT_DONE.sql
3_File7_NOT_DONE.sql
3_File8_NOT_DONE.sql
4_File9_NOT_DONE.sql
5_File10_NOT_DONE.sql
6_File11.sql
6_File12.sql
我不想做的是从这些文件中删除 _NOT_DONE 部分:
3_File5_NOT_DONE.sql
3_File6_NOT_DONE.sql
3_File7_NOT_DONE.sql
3_File8_NOT_DONE.sql
例如以 3_File
开头的文件
完成后我不希望完整列表看起来像这样:
1_File1.sql
1_File2.sql
1_File3.sql
2_File4.sql
3_File5.sql
3_File6.sql
3_File7.sql
3_File8.sql
4_File9_NOT_DONE.sql
5_File10_NOT_DONE.sql
6_File11.sql
6_File12.sql
我试过在 powershell 中使用它,它获取了所有文件,但它迫使我将新名称设置为静态名称(参见 -Replace
的最后一部分):
Get-ChildItem *.sql | Rename-Item -NewName {$_.name -Replace '3_File.*_NOT_DONE\.sql$', '<static filename>.sql'}
我也想在 -Replace
的最后一部分使用正则表达式。或者也许有另一种方法可以使新名称保留其原始名称的一部分?
也许这会对您有所帮助:
Get-ChildItem 3_*.sql | Rename-Item -NewName {$_.Name -replace "_NOT_DONE", ""}
之前:“3_File8_NOT_DONE.sql
之后:“3_File8.sql”
要获得您想要的列表,它可以使用此解决方案
Get-ChildItem C:\temp\test*.sql | Rename-Item -NewName {$_.Name -replace "_NOT_DONE", ""}
请注意,您过滤 Get-ChildItem 以便仅重命名以“3”开头并以“.sql”结尾的文件。
@Lndngr 的解决方案将从所有文件中删除“_NOT_DONE”。
我正在尝试使用 cmdlet Rename-Item
更改文件夹中多个文件的文件名。
这是我的文件的例子(现实中还有更多的文件):
1_File1.sql
1_File2.sql
1_File3.sql
2_File4.sql
3_File5_NOT_DONE.sql
3_File6_NOT_DONE.sql
3_File7_NOT_DONE.sql
3_File8_NOT_DONE.sql
4_File9_NOT_DONE.sql
5_File10_NOT_DONE.sql
6_File11.sql
6_File12.sql
我不想做的是从这些文件中删除 _NOT_DONE 部分:
3_File5_NOT_DONE.sql
3_File6_NOT_DONE.sql
3_File7_NOT_DONE.sql
3_File8_NOT_DONE.sql
例如以 3_File
开头的文件完成后我不希望完整列表看起来像这样:
1_File1.sql
1_File2.sql
1_File3.sql
2_File4.sql
3_File5.sql
3_File6.sql
3_File7.sql
3_File8.sql
4_File9_NOT_DONE.sql
5_File10_NOT_DONE.sql
6_File11.sql
6_File12.sql
我试过在 powershell 中使用它,它获取了所有文件,但它迫使我将新名称设置为静态名称(参见 -Replace
的最后一部分):
Get-ChildItem *.sql | Rename-Item -NewName {$_.name -Replace '3_File.*_NOT_DONE\.sql$', '<static filename>.sql'}
我也想在 -Replace
的最后一部分使用正则表达式。或者也许有另一种方法可以使新名称保留其原始名称的一部分?
也许这会对您有所帮助:
Get-ChildItem 3_*.sql | Rename-Item -NewName {$_.Name -replace "_NOT_DONE", ""}
之前:“3_File8_NOT_DONE.sql
之后:“3_File8.sql”
要获得您想要的列表,它可以使用此解决方案
Get-ChildItem C:\temp\test*.sql | Rename-Item -NewName {$_.Name -replace "_NOT_DONE", ""}
请注意,您过滤 Get-ChildItem 以便仅重命名以“3”开头并以“.sql”结尾的文件。 @Lndngr 的解决方案将从所有文件中删除“_NOT_DONE”。