Polecenie BAT, aby wstawić znak. w nazwie pliku

Kwestia

Mam problem, którego rozwiązanie natknąłem się kilka lat temu, ale - niestety - moja pamięć ostatnio się zawiesiła i zgubiłem plik wsadowy!

Zaczynamy od tej / niezręcznej nazwy pliku:

rank (wszystkie) _so2_1hr_conc_A_2p5h10.dat

Następujące narzędzie BAT sprytnie usuwa wszystko przed „A” (pierwsze 23 znaki):

 @echo off dla %% i in (* .dat) do (ustaw fName = %% i) i zadzwoń: rename goto: eof: rename :: Przycina pierwsze 23 znaki fName ('rank (all) _so2_1hr_conc_'): ren% fName%% fName: ~ 23% goto: eof 

Świetny! To sprawia, że:

A_2p5h10.dat

Teraz muszę to przekonwertować na:

A_2p5h100.dat

Zauważ, że „... h10” musi być „... h100”. Zauważ, że w tym przykładzie część poprzedzająca znak „.” jest „A_2p5h10”, może to być dowolny 8-znakowy ciąg (więc będziemy potrzebować symbolu wieloznacznego lub czegoś).

Czy możesz zaproponować procedurę, która doda „0” w środku nazwy pliku (poprzedzającej „.”)? W katalogu znajdują się setki nazw plików, które wymagają tej konwersji.

Jak sobie przypominam, polecenie krytyczne (uważam, że używane REN), które kiedyś to robiło, było niezwykle proste (zawierało jedno z więcej, jak pamiętam).

Rozwiązanie

Możesz użyć tego skryptu:

 @echo off dla %% i in (* .dat) do (set fName = %% i) & call: rename goto: eof: rename :: Zmień nazwę pliku, odrzucając pierwsze 23 znaki, a ostatnie 7 i dodając H100.plt na końcu ren% fName%% fName: ~ 23, -7% H100.plt goto: eof 

Uwaga

Podziękowania dla Tommy'ego za tę poradę na forum.

Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki