CMD (Win 7) - zamiana nazw plików z ich równoczesnym kopiowaniem.

Dodano: 2010-02-20

Skrypt poniższy przenosi pliki z jednego folderu do drugiego ze zamianą ich nazw. Przydatne to jest w czasie gdy np.: utworzymy kopię zakupionej płyty z utworami muzycznymi i chcemy przypisać (skopiować) tekst piosenek do katalogu, w którym znajdują się już utwory (kolejność piosenek i utworów powinna sobie odpowiadać). Skrypt ten zaoszczędza dużo czasu w przypadku ręcznego kopiowania nazw.

Poniższy skrypt można, niewielkim nakładem sił zmodyfikować, tak aby zamieniał nazwy plików na nazwy zawarte w pliku tekstowym ;-)

Drukuj Zaznacz kod
@echo off  
setLocal EnableDelayedExpansion  
cls  

set findEXE=%windir%\system32\find.exe  
if "%5%" EQU "" (  
	@echo Nie podano parametrow!!!  
	GOTO INSTRUCTION  
) else (  
  
	@echo %1  
	@echo %2  
	@echo %3  
	@echo %4  
	@echo %5  
  
	if exist temp.rename (  
		del temp.rename  
	)  
  
	for /f "delims=" %%a in ('dir %1 /s/a/b ^| %findEXE% /I "%2"') do (  
		@echo %%~na  
		@echo %%~na >> temp.rename  
	)  
  
  
	set count=0  
	for /f "delims=" %%a in ('dir %3 /s/a/b ^| %findEXE% /I "%4"') do (  
		set /a count=!count!+1  
  
		set cFile=0  
		FOR	/F "delims=" %%i in (temp.rename) do (  
			set /a cFile=!cFile!+1  
  
			if !cFile! EQU !count! (  
				set comm=%%i  
				set comm=!comm:~0,-1!  
				set comm=copy %%a %1\!comm!.txt  
				@echo !comm!  
				!comm!  
			)  
		)  
	)  
)  
  
pause  
GOTO END  
  
:INSTRUCTION  
cls  
@echo *****************************************************************************  
@echo Skrypt dziala wylacznie z parametrami.  
@echo.  
@echo Skrypt ten przyjmuje piec argumetow:
@echo  1) sciezka do folderu z plikami, ktorych nazwy maja posluzyc za wzor,  
@echo  2) rozszerzenie plikow zrodla nazw,  
@echo  3) sciezka do folderu z ktorego maja byc skopiowane pliki  
@echo     i zmienione ich nazwy,  
@echo  4) rozszerzenie plikow celu,  
@echo  5) sciezka do folderu docelowego.  
@echo *****************************************************************************  
  
:END  
exit  

Poniżej podaję przykład zastosowania skryptu. Załóżmy że: wykonaliścmy backup utworów muzycznych jakiegoś albumu, następnie ściągneliśmy słowa do każdego utworu w oddzielnym pliku do każdej piosenki. Okazało się, że nazwy utworów wyglądają 01.ogg itd. a słowa w plikach to NazwaAlbumu_NumerUtworu_Tytuł.txt. Kopiowanie kolejne nazw plików to długa i męcząca robota, ale mamy skrypt. Wszystkie pliki znajduja się w folderze d:\Music\Album01\

renameFile.bat d:\Music\Album01 .txt d:\Music\Album01 .ogg d:\Music\Album01

Szybciej niż złożona operacja ręcznego kopiowania nazwa ;-)