Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 删除各种数字和括号_Powershell_Duplicates - Fatal编程技术网

Powershell 删除各种数字和括号

Powershell 删除各种数字和括号,powershell,duplicates,Powershell,Duplicates,我有各种照片文件,例如dsc001(0).jpg,dsc002(3).jpg,dsc003(13).jpg 如何删除括号和数字,使其显示为dsc001.jpg,dsc002.jpg等 目前我一直在使用 Get-ChildItem *.jpg | foreach { Rename-Item $_ $_.Name.Replace("(0)", "") } 并且每次都更改数字。您可以使用正则表达式匹配来使用-Replace操作符执行此操作 GCI *.jpg|%{ $NewName =

我有各种照片文件,例如
dsc001(0).jpg
dsc002(3).jpg
dsc003(13).jpg

如何删除括号和数字,使其显示为
dsc001.jpg
dsc002.jpg

目前我一直在使用

Get-ChildItem *.jpg | foreach {
  Rename-Item $_ $_.Name.Replace("(0)", "")
}

并且每次都更改数字。

您可以使用正则表达式匹配来使用
-Replace
操作符执行此操作

GCI *.jpg|%{
    $NewName = $_.Name -replace '\(\d+\).jpg$','.jpg'
    $_|Rename-Item -NewName $NewName
}
要在子文件夹中包含内容,请执行以下操作:

GCI *.jpg -recurse |%{
    $NewName = $_.Name -replace '\(\d+\).jpg$','.jpg'
    $_|Rename-Item -NewName $NewName
}
要重命名文件夹,请执行以下操作:

GCI *|Where{$_.PSIsContainer}|%{
    $NewName = $_.Name -replace '\(\d+\)$'
    $_|Rename-Item -NewName $NewName
}

您可以使用正则表达式匹配来使用
-Replace
操作符执行此操作

GCI *.jpg|%{
    $NewName = $_.Name -replace '\(\d+\).jpg$','.jpg'
    $_|Rename-Item -NewName $NewName
}
要在子文件夹中包含内容,请执行以下操作:

GCI *.jpg -recurse |%{
    $NewName = $_.Name -replace '\(\d+\).jpg$','.jpg'
    $_|Rename-Item -NewName $NewName
}
要重命名文件夹,请执行以下操作:

GCI *|Where{$_.PSIsContainer}|%{
    $NewName = $_.Name -replace '\(\d+\)$'
    $_|Rename-Item -NewName $NewName
}

我对这个很陌生,什么是正则表达式,它和powershell有什么不同吗?正则表达式是正则表达式的缩写。这是一种执行模式匹配的方法,提供了大量信息,并解释了这个特殊的正则表达式。我将使用
-Filter'*(*).jpg'
并直接通过管道重命名Item
Get ChildItem-Filter'*(*).jpg'\;Rename Item-NewName{$\.Name-replace'*\(\d+\).jpg$,'.jpg'}
我的下一个问题。。是否有一种方法可以在包含文件的文件夹上执行此任务,而不是为每个文件夹设置位置。例如,我必须在H:\User\Photos\Canon和H:\User\Photos\Sony中查找其他文件夹,我不能直接转到H:\User\Photos并运行此文件夹。是的,只需添加-recurse开关我对此非常陌生,什么是regex,它与powershell不同吗?regex是正则表达式的缩写。这是一种执行模式匹配的方法,提供了大量信息,并解释了这个特殊的正则表达式。我将使用
-Filter'*(*).jpg'
并直接通过管道重命名Item
Get ChildItem-Filter'*(*).jpg'\;Rename Item-NewName{$\.Name-replace'*\(\d+\).jpg$,'.jpg'}
我的下一个问题。。是否有一种方法可以在包含文件的文件夹上执行此任务,而不是为每个文件夹设置位置。例如,我必须先打开H:\User\Photos\Canon,然后打开H:\User\Photos\Sony,才能打开其他文件夹,难道我不能直接转到H:\User\Photos并运行此操作吗?是的,只需添加-recurse开关即可