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.

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.


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;}

oooh, co robi GCI? Ładne „Get-ChildItem”
jcolebrand
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.