Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 12

Модерирует : KLASS, IFkO

KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

YuS_two



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
@echo off
echo Старт программы:
rem Отметка старта программы в отдельном файле:
>startstop_bat.txt echo Start: %date% %time%
 
rem Задаем имя входного файла:
set "f_in=test.txt"
rem Задаем имя промежуточного файла:
set "f_cnvu=test-UTF8.txt"
rem Задаем имя файла в конечно кодировке 866:
set "f_cnvo=test-866.txt"
rem Указывем путь к каталогу, где будут создаваться подпапки:
set "dst=c:\TEMP\!11 33\DST1"
 
rem Проверяем существование каталога и если отсутствует, то создаем.
if not exist "%dst%\" md "%dst%"
if errorlevel 1 echo Error. Невозможно создать каталог %dst%&&pause&&exit
 
echo Добавляем разделители...
chcp 65001>nul
for /f "delims=" %%m in ('type "%f_in%"') do (
    set "st=%%m"
    setlocal enabledelayedexpansion
    set "st=!st:~0,60!$!st:~61,68!$!st:~130!"
    echo !st!>>tmp
    endlocal
)
chcp 866>nul
move /y tmp "%f_cnvu%">nul
echo Завершено добавление разделителей.
echo.
rem pause
echo.
echo Конвертируем кодировку...  
 
rem =======
rem Блок перекодировки чистого cmd - при необходимости раскомментировать строки с двоеточиями ::
rem Перекодировка работает криво, большая вероятность ошибок в названиях папок...
::chcp 65001>nul
::cmd /d/u/c type "%f_in%">tmp
::chcp 1251>nul
::type tmp>"%f_in%"
::del tmp
rem =======
 
rem Конвертер кодировок из комплекта GnuWin32 http://gnuwin32.sourceforge.net/packages/libiconv.htm
rem Скачивать можно без установщика - "Binaries  Zip" http://gnuwin32.sourceforge.net/downlinks/libiconv-bin-zip.php
iconv -c -s -f UTF-8 -t 866 "%f_cnvu%">"%f_cnvo%"
echo Конвертирование завершено.
echo.
rem pause
echo.
echo Преобразуем некоторые спецсимволы и создаем дерево каталогов...
rem Разделитель $ должен быть указан в delims второго цикла for:
for /f "delims=" %%i in ('type "%f_cnvo%"') do (
    set "str=%%i"
    setlocal enabledelayedexpansion
    set "str=!str:-N=!"
    set "str=!str:без устан=!"
    set "str=!str:"=!"
    set "str=!str::=;!"
    set "str=!str:$ =$!"
    set "str=!str:&=_AND_!"
    for /f "tokens=1,2 delims=$" %%k in ("!str!") do (
        endlocal
        set "mdir=%%l"&&set "name=%%k"
        setlocal enabledelayedexpansion
        set "mdir=!mdir:/=\!"
        set "mdir=!mdir:  = !"
        set "mdir=!dst!\!mdir!"
        set "name=!name:\=-!"
        set "name=!name:/=-!"
        set "name=!name:?=#!"
        echo !name!|findstr /rc:"\*">nul&&(for /f "tokens=1-5,* delims=*" %%a in ("!name!") do set "name=%%a%%b%%c%%d%%e%%f")
        call :sp
        if not exist "!mdir!" md "!mdir!"
        if errorlevel 2 echo mdir="!mdir!"
        if not exist "!mdir!\!name!\" md "!mdir!\!name!"
        if errorlevel 2 echo name="!name!"
        endlocal
    )
)
rem Отметка завершения программы в отдельном файле:
>>startstop_bat.txt echo Stop: %date% %time%
rem Подчищаем за собой:
if exist "%f_cnvu%" del "%f_cnvu%"
if exist "%f_cnvo%" del "%f_cnvo%"
echo.
echo Программа завершена.
echo.
pause&&exit
 
:sp
if "!mdir:~-1!"==" " set "mdir=!mdir:~0,-1!"
if "!mdir:~-1!"==" " goto sp
:sp1
if "!name:~-1!"==" " set "name=!name:~0,-1!"
if "!name:~-1!"==" " goto sp1
exit /b

Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 21:15 08-09-2016 | Исправлено: YuS_two, 21:19 08-09-2016
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 12
KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru