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

937
jcolebrand

Ich habe eine Liste von Dateien, die aus 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 umbenennen in:

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

Ich bin offen für Powershell, einfache alte Ansätze oder was auch immer. Wenn Sie es mit einem Regex tun können, wäre das faszinierend, aber was auch immer funktioniert, funktioniert auch. Ich will die Zwecke, 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 ein einmaliger Job, kein Skript, wenn das wichtig ist. Aber ich kann es in Zukunft wiederholen, also ist scriptable keine schlechte Sache.

1

2 Antworten auf die Frage

4
Ryan

Fügen Sie dies in eine Batchdatei 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 anschließend mit dem umgeordneten Dateinamen umbenannt.

heiliger Mist, der großartig ist. jcolebrand vor 13 Jahren 1
Ha danke. Solange die Dateinamen ziemlich konsistent sind, wird dies ausreichen. Ryan vor 13 Jahren 1
4
Nick T

Ein grobes PS-Skript für Tritte:

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