Есть папка с различными файлами, из которой запускается батник, преобразующий кодировку файлов *.txt и *.csv из этой папки и после выполняющий программу конвертируя их в файлы *.kml
Нужно:
1. добавить проверку: если в начале файла есть строка Name,Latitude,Longitude,Description или Name;Latitude;Longitude;Description не добавлять ее в файл. Если нет определить какой разделитель в файле "," или ";" и добавить в начало файла строку Name,Latitude,Longitude,Description с соответстующим разделителем.
2. Проверить код на универсальность, если есть грубые ляпы убрать их.
Заранее спасибо.
Файлы могут быть следующего вида
Код:
Код: Выделить всё
Name,Latitude,Longitude,Description
Первая точка,33.32456,65.345678,ВЛ-10/4
Вторая_точка,34.234565,54.5456675,ВЛ-11/1или
Код:
Код: Выделить всё
Name;Latitude;Longitude;Description
Первый_знак;33.32456;65.345678;ВЛ-10/4
Второй_знак;34.234565;54.5456675;ВЛ-11/1Сам батник:
Код:
Код: Выделить всё
@Echo on
:: =========================================
:: смена кодировки cp1251 на utf-8
:: =========================================
:: создаем папку "utf8"
md utf8
:: перекодируем все файлы с расширением *.txt и *.csv,
:: и кладем их в папку "utf8"
:: в папке с программой должна лежать программа iconv
for %%i in (*.txt *.csv) do ".\iconv\iconv" -t UTF-8 "%%i" > "utf8\%%i"
:: =========================================
:: перевод в *kml
:: =========================================
:: определяем разрядность системы (определяем наличие GPSBabel в установленных программах)
If Defined ProgramFiles(x86) (
Set gpsbabel="%ProgramFiles(x86)%\GPSBabel\gpsbabel.exe" -w -i unicsv -f
) Else (
Set gpsbabel="%ProgramFiles%\GPSBabel\gpsbabel.exe" -w -i unicsv -f
)
:: добавляем во все файлы *.txt в папке utf8 строку "Name,Latitude,Longitude,Description"
:: конвертируем и кладем их в папку с исходными
FOR %%i IN (".\utf8\*.txt") DO (
>"%0.tmp" Echo Name,Latitude,Longitude,Description
>>"%0.tmp" Type "%%i"
%gpsbabel% "%0.tmp" -o kml -F "%%~ni.kml"
)
del "%0.tmp" 2>nul
:: добавляем во все файлы *.csv в папке utf8 строку "Name;Latitude;Longitude;Description"
:: конвертируем и кладем их в папку с исходными
FOR %%i IN (".\utf8\*.csv") DO (
>"%0.tmp" Echo Name;Latitude;Longitude;Description
>>"%0.tmp" Type "%%i"
%gpsbabel% "%0.tmp" -o kml -F "%%~ni.kml"
)
del "%0.tmp" 2>nul
:: удаляем каталог utf8
rd /s /q "%~dp0\utf8"
exit/bПробовал команду:
Код:
Код: Выделить всё
@type "%~dp0\utf8\test2.txt" | find /i "Name,Latitude,Longitude,Description" >nul && exit
>> "%~dp0\utf8\test2.txt" (echo Name,Latitude,Longitude,Description)проверку выполняет, и добавляет строку, но только в конец файла.
