BAT-Befehl zum Einfügen eines Zeichens. in einem Dateinamen
![](http://img.brin-designs.com/img/games/275/bat-command-insert-char.png)
Problem
Ich habe ein Problem, dessen Lösung ich vor ein paar Jahren gefunden habe, aber leider ist mein Speicher kürzlich abgestürzt und ich habe die Batch-Datei verloren!
Wir fangen mit diesem peinlichen Dateinamen an:
rank (all) _so2_1hr_conc_A_2p5h10.dat
Das folgende BAT-Dienstprogramm entfernt geschickt alles vor dem 'A' (die ersten 23 Zeichen):
@echo off für %% i in (* .dat) do (setze fName = %% i) & rufe: rename goto: eof: rename :: Beschneide die ersten 23 Zeichen von fName ('rank (all) _so2_1hr_conc_'): ren% fName%% fName: ~ 23% goto: eof
Großartig! Dies ergibt:
A_2p5h10.dat
Jetzt muss ich das umwandeln in:
A_2p5h100.dat
Beachten Sie, dass '... h10' '... h100' sein muss. Beachten Sie, dass in diesem Beispiel der Teil vor dem '.' Ist 'A_2p5h10', kann es sich um eine beliebige 8-stellige Zeichenfolge handeln (wir benötigen also einen Platzhalter oder etwas anderes).
Können Sie bitte eine Routine vorschlagen, bei der die '0' in der Mitte des Dateinamens (vor dem '.') Eingefügt wird? Das Verzeichnis enthält Hunderte von Dateinamen, für die diese Konvertierung erforderlich ist.
Soweit ich mich erinnere, war der kritische Befehl (ich glaube, er verwendete REN), der dies ausführte, extrem einfach (enthielt, wie ich mich erinnere, einen von mehr%).
Lösung
Sie können dieses Skript verwenden:
@echo off für %% i in (* .dat) do (setze fName = %% i) & call: rename goto: eof: rename :: Benenne die Datei um, indem du die ersten 23 Zeichen und die letzten 7 verwerfst und H100.plt hinzufügst am Ende ren% fName%% fName: ~ 23, -7% H100.plt goto: eof
Hinweis
Danke an Tommy für diesen Tipp im Forum.