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_File Rename - Fatal编程技术网

使用Powershell查找字符并重命名文件名

使用Powershell查找字符并重命名文件名,powershell,file-rename,Powershell,File Rename,我在一个目录中有大量文件使用这种命名约定:“1050_14447_Letter Extension.pdf”等。我需要删除第二个下划线(包括第二个下划线)之前的所有字符。因此,新文件名将是“Letter Extension.pdf”。如何迭代相应的单个目录重命名?给定类似“1050\u 14447\u Letter Extension.pdf”的字符串,有一种方法: $foo = "1050_14447_Letter Extension.pdf" $foo -replace '^.*_.*_(.

我在一个目录中有大量文件使用这种命名约定:“1050_14447_Letter Extension.pdf”等。我需要删除第二个下划线(包括第二个下划线)之前的所有字符。因此,新文件名将是“Letter Extension.pdf”。如何迭代相应的单个目录重命名?

给定类似“1050\u 14447\u Letter Extension.pdf”的字符串,有一种方法:

$foo = "1050_14447_Letter Extension.pdf"
$foo -replace '^.*_.*_(.*)$', '$1'

以下是重命名当前目录中所有pdf文件的示例,从文件名中删除所有前导数字或下划线:

Get-ChildItem -Filter *.pdf | Rename-Item -NewName {$_.Name -replace '^[0-9_]+'}

下面是另一个不依赖正则表达式但假定文件路径中没有下划线的方法:

Get-ChildItem 'C:\path2files' | %{
    Rename-Item $_.fullname $_.Name.Split("_")[2]
    }

这将处理文件名中任意数量的下划线(忽略路径),并在生成新名称时跳过最后一个下划线之前的所有内容:-

Get-ChildItem 'C:\somedir' -Filter *.pdf |`
%{Rename-Item $_.Fullname ($_.Name.Split("_")|`
select -last 1)}
您可以使用重命名项命令上的-whatif开关进行测试,例如

gci 'R:\TECH' -Filter *.pdf|`
%{rename-item -whatif $_.Fullname ($_.Name.Split("_")|`
select -last 1)}
返回:

假设:在目标上执行操作“重命名文件”项:R:\TECH\38415_jobs121155535240.pdf Destin 声明:R:\TECH\jobs121155535240.pdf”。 假设:在目标上执行“重命名文件”操作项目:R:\TECH\CHG38415\u JOB\u 121112153717550.pdf Des 地址:R:\TECH\121112153717550.pdf”。 假设:在目标上执行“重命名文件”操作项目:R:\TECH\CHG38415_PREH_121113152548740.pdf De 职位:R:\TECH\121113152548740.pdf”。 假设:在目标上执行“重命名文件”操作项目:R:\TECH\CHG38415_PREI_121113152600640.pdf De 职位:R:\TECH\121113152600640.pdf”。 假设:在目标上执行“重命名文件”操作项目:R:\TECH\MCPTEST121125121201390.pdf Destinati 地址:R:\TECH\MCPTEST121125121201390.pdf”。 假设:对目标“项目执行“重命名文件”操作:R:\TECH\PREHAND_38415_121121154127000.pdf De 职位:R:\TECH\121121154127000.pdf”。 假设:在目标上执行操作“重命名文件”项:R:\TECH\PREIMP_38415_121121154140630.pdf Des
目的:R:\TECH\121121154140630.pdf.“

这里是使用的自动化工具的另一种方法。安装后,
mv
命令通过半自动决策程序进行扩充

您将首先执行以下操作:

mv "1050_14447_Letter Extension.pdf" "Letter Extension.pdf"
然后你会问什么是广义变换:

mv --explain
它会告诉你``

从以“.”分隔的第一个单词开始连接文件名及其扩展名

这还不是你想要的。您需要再举一个例子,例如:

mv --explain "25771_144_ 17Your file_name.pdf" " 17Your file_name.pdf"
文件名从第二个'.'+常量字符串'.'和扩展名之后开始

现在你可以做:

mv
它将执行转换

免责声明:出于学术目的,我是这部作品的合著者。其他示例可在上找到