使用条件重命名文件

用户名

需要一些建议。我正在尝试使用正则表达式来做一些可能无法完成的事情,如果可能的话,这很麻烦。我什么都不能工作。我正在尝试为我的PDF文件创建一个标记系统。因此,如果我有此文件名:

"csharp 8 in a nutshell[studying programming csharp ebooks].pdf"

我希望'[]'内的所有单词中都带有'@'。所以上面的文件名看起来像这样:

"csharp 8 in a nutshell[@studying @programming @csharp @ebooks].pdf"

问题是将'@'保留在'[]'中。例如,我宁愿文件名最前面的“ csharp”不带有“ @”。

另外,我正在使用一个名为“批量重命名实用程序”的批量重命名器来帮助我。

  1. 能做到吗?
  2. 如果可以的话,如何提示?

谢谢。

维克多·史翠比维

批量重命名实用程序不支持替换多个匹配项,您只能匹配整个文件名并使用捕获组/反向引用执行替换。

由于您使用的是Windows,因此建议您使用Powershell:

cd 'C:\YOUR_FOLDER\HERE'
Get-ChildItem -File | Rename-Item -NewName { $_.Name -replace '(?<=\[[^][]*?)\w+(?=[^][]*])','@$&' } 

请参见此regex演示及其在.NET regex风格下可以使用证明

  • (?<=\[[^][]*?)-在此位置之前,必须存在[和,然后除[以外的任意数量的字符],应尽可能少
  • \w+ -1个以上的字符
  • (?=[^][]*])-在此位置之后,除了[和之外]必须有尽可能多的]字符,然后是一个字符。

替换为@+整个匹配值($&)。

另外,您可以使用

Get-ChildItem -File | Rename-Item -NewName { $_.Name -replace '(\G(?!\A)[^][\w]+|\[)(\w+)','$1@$2' }

请参阅此regex演示.NET regex测试

  • (\G(?!\A)[^][\w]+|\[)-第1组($1):上一场比赛的结尾和1个以上的字符(除之外)][单词char或一个[char
  • (\w+)-第2组($2):一个或多个单词字符。

如果只想重命名* .pdf文件,请替换Get-ChildItem -FileGet-ChildItem *.pdf

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用重命名重命名文件

来自分类Dev

使用重命名重命名多个文件

来自分类Dev

使用重命名命令重命名文件

来自分类Dev

如何在PowerShell中使用条件语句重命名文件

来自分类Dev

使用python重命名文件

来自分类Dev

使用R重命名文件

来自分类Dev

使用pathlib重命名文件

来自分类Dev

使用VBA重命名文件

来自分类Dev

使用模式重命名文件

来自分类Dev

使用Bash重命名文件

来自分类Dev

使用通配符重命名文件

来自分类Dev

使用 WinSCP 重命名文件

来自分类Dev

使用重命名来重命名文件和目录

来自分类Dev

遍历文件夹,使用VBA重命名满足特定条件的文件?

来自分类Dev

使用文件列表重命名多个文件

来自分类Dev

使用Powershell递归重命名文件

来自分类Dev

使用C函数rename()重命名文件

来自分类Dev

使用bash / regex重命名文件?

来自分类Dev

使用Node.js重命名文件

来自分类Dev

使用FtpWebRequest移动/重命名文件

来自分类常见问题

使用node.js重命名文件

来自分类Dev

使用readdir重命名文件是否安全?

来自分类Dev

使用for循环批量重命名文件

来自分类Dev

使用文本列表批量重命名文件

来自分类Dev

zip文件添加并使用php重命名

来自分类Dev

如何使用cfzip重命名文件?

来自分类Dev

使用cmd ren命令重命名文件

来自分类Dev

如何使用python重命名多个文件?

来自分类Dev

使用通配符路径重命名文件