
Ich habe eine Liste mit Dateien, die von SSMS in XP generiert wurden, wie folgt:
dbo.mysproc1.StoredProcedure.sql
dbo.mysproc2.StoredProcedure.sql
dbo.mySproc3.StoredProcedure.sql
... you get the drift
Ich möchte sie wie folgt umbenennen:
proc.dbo.mysproc1.sql
proc.dbo.mysproc2.sql
proc.dbo.mySproc3.sql
... you get the drift
Ich bin offen für Powershell, das gute alte Batch oder was auch immer. Wenn Sie es mit einem regulären Ausdruck machen können, wäre das faszinierend, aber was auch immer dort funktioniert. Ich will die Ziele, nicht die Mittel, ja? Ich bin mir nur nicht sicher, welchen Befehl ich verwenden soll. Ich möchte jedoch kein Tool dafür herunterladen. Bitte natives XP SP3.
Dies ist eine einmalige Aufgabe und kein Skript, falls das wichtig ist. Aber ich werde es vielleicht in Zukunft wiederholen, also ist es nicht schlecht, wenn es skriptfähig ist.
Antwort1
Fügen Sie dies in eine Batchdatei im selben Verzeichnis ein und führen Sie Folgendes aus:
for /f "delims=. tokens=1,2,3,4" %%A IN ('dir /b *.sql') DO RENAME %%A.%%B.%%C.%%D proc.%%A.%%B.%%D
Dadurch wird der Dateiname mithilfe der Variablen %%A bis %%D anhand des Zeichens "." aufgeteilt und anschließend mit dem neu angeordneten Dateinamen umbenannt.
Antwort2
Ein grobes PS-Skript zum Spaß:
gci | foreach { $f = $_; $split = $f.Name.Split("."); $n = [string]::join(".", "proc", $split[0], $split[1], "sql")); ren $f $n;}