В XP, как мне переименовать каталог файлов, используя регулярное выражение или подобное, чтобы удалить часть имени файла и добавить префикс?

835
jcolebrand

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

Это разовая работа, а не сценарий, если это имеет значение. Но я могу повторить это в будущем, так что сценарии не так уж плохи.

1

2 ответа на вопрос

4
Ryan

Поместите это в пакетный файл, который находится в том же каталоге, и запустите:

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

черт возьми, это круто. jcolebrand 13 лет назад 1
Ха, спасибо. Пока имена файлов довольно последовательны, это поможет. Ryan 13 лет назад 1
4
Nick T

Необработанный сценарий PS для ударов ногами:

gci | foreach { $f = $_; $split = $f.Name.Split("."); $n = [string]::join(".", "proc", $split[0], $split[1], "sql")); ren $f $n;} 
ооо, что делает GCI? "Get-ChildItem" приятно jcolebrand 13 лет назад 0

Похожие вопросы