
У меня есть список файлов, сгенерированных из SSMS в XP, вот такой:
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, обычного старого пакета или чего угодно. Если вы можете сделать это с помощью регулярного выражения, это было бы увлекательно, но что бы там ни было, это тоже работает. Мне нужны цели, а не средства, да? Просто не уверен, какую команду использовать. Однако я не хочу загружать инструмент для этого. Native 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;}