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.