Не, ну линуксы рулят конечно и все такое. Однако многие частенько недооценивают неказистую “мощь” батников. А, меж тем, в умелых руках он вполне себе позволяет автоматизировать большую часть всякой рутины. В данном статье будут лежать windows bat-скрипты для разных задач.
Как подсчитать число строк в файле bat-скрипт:
:: count number of lines in file as 1st parameters Find /V /C "" < C:\tst.txt
полный батник для подсчета строк:
@echo off if "%1" == "" goto usage for /f %%a in ('find /V /C "" ^< %1') do set Num_Line=%%a echo at file %1 %Num_Line% lines goto end :usage echo ERROR: Give me file name to count lines in! echo usage line_counter.bat file_name.txt :end
объяснения тут
http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/1867323d-e6c7-440f-83a4-2bdc9b4432d5
Как удалить все папки svn из проекта (да, все-все, и вложенные тоже):
:: clean all project from .svn subfolders for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do ( rd /s /q "%%i" )
Как вывести список всех файлов в папке и всех подпапках:
dir /B /A /S > file_listing.txt
Пример установочного скрипта (когда с нсисом и иже с ними заморачиваться чрезмерно)
тут есть снипеты для
– проверка какая версия JRE установлена
– проверка наличия/существования файла по указанному пути
– извлечение файлов из архивов 7z/zip
– копирование файлов (dll библиотеки и jar-файла) в папки bin и lib JRE
– поиск файла по маске в указанной папке на примере архива java библиотеки для логирования
:: sample installation script @echo off echo Determine JRE installation... FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion') DO set jre_version=%%B FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\%jre_version%" /v JavaHome') DO set jre_full_path=%%B echo Ok. ::IF DEFINED jre_full_path ( ::ECHO JRE version - %jre_version%, JRE path - %jre_full_path% ::) IF NOT DEFINED jre_full_path ( echo Can't locate JRE location. You should install JRE first and execute this script again! pause exit ) echo determine 7z installatin... set zip_exec="c:\Program Files\7-Zip\7z.exe" if NOT exist %zip_exec% ( echo Can't locate 7z executable %zip_exec% echo You need it to extract data from archive echo install it and run this script again pause exit ) echo Ok. :: check package integrity and unpack them set apach_log_arch=%CD%\apache-log4j-1.2.16.zip if NOT exist %apach_log_arch% ( echo integrity check failed - copy in current folder archive with apache log library: echo %apach_log_arch% not exist, can't continue deployment pause exit ) echo extracting %apach_log_arch%... %zip_exec% x -y %apach_log_arch%>NUL set apach_log_path=%CD%\apache-log4j-1.2.16\ echo Ok :: start copy files set JRE_BIN=%jre_full_path%\bin set JRE_LIB=%jre_full_path%\lib\ext for /f "tokens=*" %%f in ('dir /B /S %apach_log_path%\*NTEventLogAppender.dll') do ( set apach_log_dll=%%f ) for /f "tokens=*" %%f in ('dir /B /S %apach_log_path%\*log4j-1.2.16.jar') do ( set apach_log_jar=%%f ) if not defined apach_log_dll ( echo Can't find NTEventLogAppender.dll in %apach_log_path% exiting pause exit ) if not defined apach_log_jar ( echo Can't find log4j-1.2.16.jar in %apach_log_path% exiting pause exit ) echo Copy files... if defined apach_log_dll xcopy %apach_log_dll% "%JRE_BIN%" /S /Y>NUL if defined apach_log_jar xcopy "%apach_log_jar%" "%JRE_LIB%" /S /Y>NUL :: add your own echo Ok echo Delete temporary files... rmdir /s /q "%apach_log_path%" echo Ok echo Congratulations - all dependencies are installed pause