Wie benenne ich in XP ein Dateiverzeichnis mit einem regulären Ausdruck oder ähnlichem um, um einen Teil eines Dateinamens zu entfernen und ein Präfix hinzuzufügen?

1

Ich habe eine Liste von Dateien aus SSMS in XP wie folgt generiert:

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

Ich möchte sie umbenennen in:

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

Ich bin offen für Powershell, altes Zeug oder was auch immer. Wenn Sie es mit einer Regex schaffen, wäre das faszinierend, aber was auch immer dort funktioniert. Ich will die Ziele, nicht die Mittel, ja? Nur nicht sicher, welchen Befehl Sie verwenden sollen. Ich möchte jedoch kein Tool herunterladen, um dies zu tun. Native XP SP3 bitte.

Dies ist eine einmalige Aufgabe, die nicht per Skript erledigt werden muss, wenn es darauf ankommt. Aber ich kann es in Zukunft wiederholen, also ist skriptfähig keine schlechte Sache.

Jcolebrand
quelle

Antworten:

4

Fügen Sie dies in eine Batch-Datei ein, die sich im selben Verzeichnis befindet, 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 durch das "." Zeichen mit den Variablen %% A bis %% D, und benennen Sie dann mit dem neu geordneten Dateinamen.

Ryan
quelle
1
heiliger Mist, der fantastisch ist.
Jcolebrand
1
Ha danke. Solange die Dateinamen ziemlich konsistent sind, reicht dies aus.
Ryan
4

Ein grobes PS-Skript für Kicks:

gci | foreach { $f = $_; $split = $f.Name.Split("."); $n = [string]::join(".", "proc", $split[0], $split[1], "sql")); ren $f $n;}
Nick T
quelle
oooh, was macht GCI? "Get-ChildItem" schön
Jcolebrand