问题描述
我有一堆要重命名的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"
,例如.
,则失败。
当您想在batch-file中使用该代码时,请不要忘记将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。