Як в XP перейменувати каталог файлів, використовуючи регулярний вираз або подібний, щоб видалити частину імені файлу та додати префікс?


1

У мене є список файлів, що генеруються із 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

Я відкритий для Powerhell, звичайної старої партії чи будь-чого іншого. Якщо ви можете це зробити з регулярним виразом, який би був захоплюючим, але все, що там теж працює. Я хочу кінці, а не засоби, так? Просто не впевнений, яку команду використовувати. Однак я не хочу завантажувати інструмент для цього. Рідний XP SP3, будь ласка.

Це разова робота, а не те, що слід писати, якщо це має значення. Але я можу повторити це в майбутньому, тому сценарій не є поганою справою.

Відповіді:


4

Помістіть це у пакетний файл, що знаходиться в тому самому каталозі, і запустіть:

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, а потім перейменуйте за допомогою переставленого імені файлу.


1
святе лайно, що приголомшливо.
jcolebrand

1
Ха дякую. Поки назви файлів досить послідовні, це зробить трюк.
Райан

4

Грубий PS-скрипт для ударів:

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

oooh, що робить GCI? "Get-ChildItem" приємно
jcolebrand
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.