从Powershell转换为Python

时间:2018-12-04 19:12:36

标签: python powershell

我正在处理一个简单的脚本,我曾经使用过/编辑带有电影/电视节目的大文件夹,并且发现了一种删除文件夹和文件标题中某些字符串的简便方法,但这是PowerShell命令并且我的其余功能都在Python脚本中。

  1. 首先,我要找一个能够制作与该PowerShell行等效的Python的人:

    Get-ChildItem -Recurse | Where-Object {$_.Name -match 'SomeString'} | Rename-Item -NewName {$_.Name -replace 'SomeString', ''}
    
  2. 第二,如果我要删除的字符串包含[](例如:-[Something]),PowerShell命令会遇到问题-标题将变得不可读,我无法理解确定原因。

2 个答案:

答案 0 :(得分:1)

尽管可以使用双重反引号方法,但我建议使用Regex.Escape方法。如果要转义的字符串来自外部源,则安全且有用。

Regex.Escape(String) Method

  

转义最小字符集 \*+?,{{ 1}},|{[()^$,{{1} }和空白)   他们的逃生代码。这指示正则表达式   引擎从字面上解释这些字符,而不是   元字符。

示例

.

结果

#

答案 1 :(得分:0)

这解决了我的问题并为我工作。感谢JosefZ展示了Regex.Escape方法的用法。

$dir = 'C:\Users\user\Desktop\folder'
CD $dir
$SomeString = '-[String.String]'
$SafeString = [regex]::Escape( $SomeString )
Get-ChildItem -Recurse | Where-Object {$_.Name -match $SafeString} | Rename-Item -NewName {$_.Name -replace $SafeString, ''}

这将从路径中的任何文件夹和文件标题中删除所有-[String.String]。