如何使用CMD重命名大容量文件



我有一堆sql文件,我想重命名它们,因为它们在文件开头有模式名称,如下所示:

SCHEMA.TABLE.sql

我想重命名为:

TABLE.sql

不幸的是,当我试图在我的工作笔记本电脑上做到这一点时,我无法下载任何第三方软件,如批量重命名实用程序,所以我试图使用CMD来完成这一操作。

我尝试的是:

REN SCHEMA.*.sql *.sql

这看起来像是找到了匹配,但什么都没有改变。所以我不确定我需要改变什么,所以我很感激任何关于我哪里出了问题的建议。

ren命令解释目标模式*.sql中的*,使其匹配所有源字符,直到最后一个.,这意味着它匹配样本的部分SCHEMA.TABLE。因此,目标名称等于源名称。

请参阅这篇关于超级用户的精彩文章:Windows RENAME命令如何解释通配符?


要从文件名中删除SCHEMA.部分,需要使用for /F循环:

for /F "eol=| tokens=1* delims=." %I in ('dir /B /A:-D-H-S "*.*.sql"') do ren "%I.%J" "%J"

在存在多个.的情况下,这将失败,例如在SCHEMA..TABLE.sql中。

当您想在批处理文件中使用该代码时,不要忘记将%符号加倍!

1.使用powershell脚本可以很容易地完成这项工作。复制以下脚本,将$path编辑为文件所在的路径。

$path = 'D:MyFolderMy docstestdelete'
$pathObject = get-childitem -path $path | where-object {$_.Psiscontainer -eq $false}
foreach($file in $pathObject)
{
$fileNameArray = $file.Name.Split(".")
Rename-Item -Path $file.FullName -NewName ($fileNameArray[1]+".sql")
}

2.接下来将此脚本保存在名为testrename.ps1的文件中。打开cmd更改目录到保存testren.ps1文件的位置,然后进一步运行以下命令:

powershell -file "testren.ps1"

这里$path是文件所在的路径$pathObject将获取所述位置中的所有文件。此外,我们迭代每个文件,拆分名称以获得"schema"之后的内容,并进一步重命名它。如果cmd不是限制,那么第一个脚本也可以直接运行,方法是打开windows上的powershell窗口,修改路径后复制粘贴脚本,然后按Enter键。在这种情况下,不需要步骤2。

最新更新