Skrypt wsadowy - łącz sekwencyjne numery na plikach, aby zachować unikalność nazw
Pracuję nad skryptem do kopiowania plików w folderze, który odpowiada nazwie pliku i mam tę część opracowaną przy użyciu pętli FOR, która sprawdza, czy folder docelowy istnieje i kopiuje pliki po zweryfikowaniu, że to robi . Przykład: 11-01111_ABC_DEF.pdf przejdzie do / 11/0111 /. Długość może się różnić o jeden lub dwa znaki, ale format jest spójny. Skopiowałem mój podstawowy skrypt poniżej.
Moim problemem jest to, że czasami trzeba przetworzyć plik o tej samej nazwie. Jak mogę połączyć konkatenację numeru z końcem pliku, jeśli jedna lub więcej kopii pliku już istnieje w folderze docelowym?
setlocal enableextensions enabledelayedexpansion
for %%x in (*.PDF *.TXT) do (
set "source="C:\files"
set "dest=R:\"
set "filename=%%x"
set "prefix=!filename:~0,2!"
set "folder=!filename:~3,5!"
if not exist !dest!\!prefix!\!folder! MOVE !filename! !source!\failed
if exist !source!\!filename! MOVE !filename! !dest!\!prefix!\!folder!
)