在 XP 中,如何使用正则表达式或类似方法重命名文件目录以删除文件名的一部分并添加前缀?

在 XP 中,如何使用正则表达式或类似方法重命名文件目录以删除文件名的一部分并添加前缀?

我有一个由 XP 中的 SSMS 生成的文件列表,如下所示:

dbo.mysproc1.StoredProcedure.sql
dbo.mysproc2.StoredProcedure.sql
dbo.mySproc3.StoredProcedure.sql
... you get the drift

我想将它们重命名为:

proc.dbo.mysproc1.sql
proc.dbo.mysproc2.sql
proc.dbo.mySproc3.sql
... you get the drift

我可以使用 powershell、普通的批处理或其他任何工具。如果你能用正则表达式来做这件事,那就太有趣了,但无论什么都可以。我想要的是结果,而不是手段,对吧?只是不确定要使用什么命令。但是,我不想下载工具来执行此操作。请使用原生 XP SP3。

这是一次性的工作,不需要编写脚本,如果这很重要的话。但我将来可能会重复做这件事,所以编写脚本并不是一件坏事。

答案1

将其放入同一目录中的批处理文件中并运行:

for /f "delims=. tokens=1,2,3,4" %%A IN ('dir /b *.sql') DO RENAME %%A.%%B.%%C.%%D proc.%%A.%%B.%%D

它将使用 %%A 到 %%D 变量通过“.”字符将文件名分开,然后使用重新排列的文件名重命名。

答案2

一个粗糙的 PS 脚本:

gci | foreach { $f = $_; $split = $f.Name.Split("."); $n = [string]::join(".", "proc", $split[0], $split[1], "sql")); ren $f $n;}

相关内容