首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用CMD重命名批量文件

如何使用CMD重命名批量文件
EN

Stack Overflow用户
提问于 2020-09-22 18:48:08
回答 2查看 71关注 0票数 0

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

代码语言:javascript
复制
SCHEMA.TABLE.sql

我想将其重命名为:

代码语言:javascript
复制
TABLE.sql

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

我尝试了以下几点:

代码语言:javascript
复制
REN SCHEMA.*.sql *.sql

这看起来像是找到了一个匹配项,但没有任何变化。所以不确定我需要改变什么,所以如果有任何关于我哪里出错的建议,我将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2020-09-22 19:22:31

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

请参考这篇关于超级用户的文章:How does the Windows RENAME command interpret wildcards?

要从文件名中删除SCHEMA.部件,需要使用for /F loop

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

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

当你想在一个%**-signs**中使用代码的时候,不要忘了双倍的 batch-file

票数 1
EN

Stack Overflow用户

发布于 2020-09-22 19:22:12

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

代码语言:javascript
复制
$path = 'D:\MyFolder\My docs\testdelete'
$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文件的位置,并进一步运行以下命令:

代码语言:javascript
复制
powershell -file "testren.ps1"

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64008138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档