Jak mogę zmienić nazwę katalogu plików w XP za pomocą wyrażenia regularnego lub podobnego, aby usunąć część nazwy pliku i dodać prefiks?

1

Mam listę plików wygenerowanych z SSMS w XP w następujący sposób:

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

Chcę zmienić ich nazwę na:

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

Jestem otwarty na PowerShell, zwykłą starą partię lub cokolwiek innego. Jeśli możesz to zrobić za pomocą wyrażenia regularnego, które byłoby fascynujące, ale cokolwiek tam też działa. Chcę celów, a nie środków, tak? Po prostu nie jestem pewien, jakiego polecenia użyć. Nie chcę jednak pobierać narzędzia do tego. Proszę natywny XP SP3.

Jest to jednorazowe zadanie, a nie coś, co można napisać w skrypcie, jeśli to ma znaczenie. Ale mogę to powtórzyć w przyszłości, więc skryptowanie nie jest niczym złym.

jcolebrand
źródło

Odpowiedzi:

4

Umieść to w pliku wsadowym w tym samym katalogu i uruchom:

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

To podzieli nazwę pliku przez „.” znak przy użyciu zmiennych %% A do %% D, a następnie zmień nazwę, używając przestawionej nazwy pliku.

Ryan
źródło
1
cholera, to jest niesamowite.
jcolebrand
1
Ha dzięki. Tak długo, jak nazwy plików są dość spójne, wystarczy.
Ryan
4

Prosty skrypt PS do kopnięć:

gci | foreach { $f = $_; $split = $f.Name.Split("."); $n = [string]::join(".", "proc", $split[0], $split[1], "sql")); ren $f $n;}
Nick T.
źródło
oooh, co robi GCI? Ładne „Get-ChildItem”
jcolebrand