
我有一個從 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;}