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

问题描述

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

df['process_time'] = df.filter(like='process').max(1)

我想重命名为:

   process_time_1  process_time_2  process_time_3  process_time_4  process_time
0             5.0             NaN             NaN             NaN           5.0
1             NaN             NaN             NaN             NaN           NaN
2             NaN             NaN             3.0             NaN           3.0
3             NaN             NaN             4.0             NaN           4.0

不幸的是,当我尝试在工作笔记本电脑上执行此操作时,我无法下载任何第三方软件,例如Bulk Rename Utility,所以我尝试使用CMD进行此操作。

我尝试的是以下内容

SCHEMA.TABLE.sql

看起来像找到了一个匹配项,但没有任何变化。因此,不确定我需要更改什么,以便对我要去哪里的问题提出建议。

解决方法

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

在超级用户上咨询以下精彩文章:How does the Windows RENAME command interpret wildcards?


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

SCHEMA.

如果存在多个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:\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文件的位置,然后进一步运行以下命令:

powershell -file "testren.ps1"

此处$ path是文件所在的路径。 $ pathObject将获取该位置的所有文件。进一步,我们迭代每个文件,分割名称以获得'schema'之后的名称,然后进一步重命名。如果cmd不受限制,则也可以通过在Windows上打开Powershell窗口来直接运行第一个脚本,在修改路径后复制粘贴该脚本并按Enter键。在这种情况下,不需要步骤2。