NibelungXXX |
01-07-2013 21:03 2177606 |
выравниваемые текста в bat
с помощью батника генерируется txt файл, как сделать, чтобы было нормальное выравнивание?
1. L1 0306.zip 26652 КБ GP
2. L1 0310.zip 17768 КБ GP
3. L1 2567.zip 35539 КБ GP
4. L2 0306.zip 8883 КБ GP
5. L3 0306.rar 8883 КБ GP
6. L3 0307.rar 1 КБ GP
Как сделать чтобы было нормальное выравнивание обьема по правому краю?
А именно вот так:
1. L1 0306.zip 26652 КБ GP
2. L1 0310.zip 17768 КБ GP
3. L1 2567.zip 35539 КБ GP
4. L2 0306.zip 8883 КБ GP
5. L3 0306.rar 8883 КБ GP
6. L3 0307.rar 1 КБ GP
|
проще всего – вставлять таб
|
NibelungXXX |
02-07-2013 03:50 2177819 |
Цитата:
Цитата kiripanda
проще всего – вставлять таб »
|
не поможет, обьем изменяется каждый раз и меняет расположение на чуть чуть, он то больше, то меньше))
я думал просто пример приведете а я сам вставлю) а так вот)
Код:
@echo off
for %%i in ("%cd%") do set "name=%%~nxi"
for %%i in (*.rar *.zip) do set /a count+=1
(echo имя %name%&echo количество %count%)>"%name%.txt"
>>"%name%.txt" echo ^<№^> ^<Имя файла^> ^<Обьем^> марка
set "count="
for %%i in (*.rar *.zip) do (
set /a count+=1
set /a size=%%~zi/1024
>>"%name%.txt" call echo %%count%% %%i %%size%% KB GP
)
|
Пробуйте:
читать дальше »
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
for %%i in ("%cd%") do set "name=%%~nxi"
for %%i in (*.rar *.zip) do set /a count += 1
>"%name%.txt" (
echo Имя: %name%
echo Количество: %count%
echo.
call :EchoL "№" 10
call :EchoS
call :EchoL "Имя файла" 30
call :EchoS
call :EchoL "Обьем" 20
call :EchoS
call :EchoL "марка" 10
echo.
call :EchoC "-" 10
call :EchoS
call :EchoC "-" 30
call :EchoS
call :EchoC "-" 20
call :EchoS
call :EchoC "-" 10
echo.
)
set "count="
for %%i in (*.rar *.zip) do (
set /a count += 1
set /a size = %%~zi / 2^10
>>"%name%.txt" (
call :EchoR "!count!" 10
call :EchoS
call :EchoL "%%~i" 30
call :EchoS
call :EchoR "!size! KB" 20
call :EchoS
call :EchoL "GP" 10
echo.
)
)
endlocal
exit /b 0
rem ==========================================================================
rem ==========================================================================
:PadLeft
setlocal enableextensions enabledelayedexpansion
set sOut=%~0
set sVar=%~1
set iCount=%~2
for /l %%i in (1, 1, %iCount%) do set sSpace= !sSpace!
set sTempVar=%sVar%%sSpace%
set sTempVar=!sTempVar:~0,%iCount%!
endlocal & set %sOut:~1%=%sTempVar%
exit /b
rem ==========================================================================
rem ==========================================================================
:PadRight
setlocal enableextensions enabledelayedexpansion
set sOut=%~0
set sVar=%~1
set iCount=%~2
for /l %%i in (1, 1, %iCount%) do set sSpace= !sSpace!
set sTempVar=%sSpace%%sVar%
set sTempVar=!sTempVar:~-%iCount%!
endlocal & set %sOut:~1%=%sTempVar%
exit /b
rem ==========================================================================
rem ==========================================================================
:EchoL
call :PadLeft "%~1" "%~2"
<nul set /p sTempVar=%PadLeft%
exit /b
rem ==========================================================================
rem ==========================================================================
:EchoR
call :PadRight "%~1" "%~2"
<nul set /p sTempVar=%PadRight%
exit /b
rem ==========================================================================
rem ==========================================================================
:EchoS
<nul set /p sTempVar=
exit /b
rem ==========================================================================
rem ==========================================================================
:EchoC
setlocal enableextensions enabledelayedexpansion
set sChar=%~1
set iCount=%~2
for /l %%i in (1, 1, %iCount%) do set sString=!sString!%sChar%
<nul set /p sTempVar=%sString%
endlocal
exit /b
rem ==========================================================================
Возможный результат:
Цитата:
Код:
Имя: 0287
Количество: 3
№ Имя файла Обьем марка
---------- ------------------------------ -------------------- ----------
1 netscan.zip 9256 KB GP
2 scdwriter.zip 1940 KB GP
3 smartudm.zip 177 KB GP
|
|
NibelungXXX |
02-07-2013 20:21 2178293 |
Iska, а в чем причина, вставляя в код на сайт, все красиво, а в блокноте выглядит не ровно и даже когда код редактируешь тут все криво)) как избежать?:)
Код:
Имя: k
Количество: 6
№ Имя файла Обьем марка
---------- ------------------------------ -------------------- ----------
1 L3 0306.rar 43315 KB GP
2 L1 0306.rar 13 KB GP
3 L2 0306.zip 43315 KB GP
4 L1 0306.zip 129957 KB GP
5 L1 0310.zip 86636 KB GP
6 L1 2256.zip 173292 KB GP

|
NibelungXXX, юзать моноширинные шрифты, например Courier New, лично я использую DejaVu Sans Mono
|
Лучше всего смотрится Consolas, 14-16 кеглем — в зависимости от dpi монитора. Причём, желательно полноценный шрифт, содержащий дополнительные глифы.
|
NibelungXXX |
03-07-2013 19:35 2178822 |
Iska, Sphinx114 спасибо, все получилось что запланировал
|
NibelungXXX |
07-07-2013 10:51 2180608 |
Перенес на 7ку данный скрипт и не работает выравнивание, подскажите как к 7ке его адаптировать?, все выводит а конечный результат:
Код:
Имя: k
Количество: 6
№ Имя файла Обьем марка
1.L3 0306.rar 43315 KB GP
2.L1 0306.rar 13 KBGP
3.L2 0306.zip 43315 KBGP
4.L1 0306.zip 129957 KBGP
5.L1 0310.zip 86636 KBGP
6.L1 2256.zip 173292 KBGP
Режим вывода команд на экран (ECHO) отключен.
Режим вывода команд на экран (ECHO) отключен. - тоже не нужно чтоб писало
|
NibelungXXX, Попробуй
читать дальше »
Код:
@echo off
setlocal
set "cnt=100"
for /f "tokens=*" %%i in ('cd') do set "name=%%~nxi"
for %%i in (*.rar *.zip) do call:1 "%%i"
set /a cnt-=100
1>"%name%.txt" (
echo total: %cnt%
echo name : %name%
echo.
echo # name size model
echo --- ------------ -------- --------
for /f "tokens=2 delims==" %%i in ('set file_') do echo %%i
)
goto:eof
:1
set /a cnt+=1
set /a n=cnt-100
set "n=???%n%"
set "n=%n:~-3%"
set "fname=????????????%~1"
set "fname=%fname:~-12%"
set /a size=%~z1 / 1024
set "size=?????????%size% KB"
set "size=%size:~-8%"
set "file_%cnt%=%n:?= % %fname:?= % %size:?= % GP"
Как-то так:
Код:
total: 8
name : test
# name size model
--- ------------ -------- --------
1 L1 0024.rar 19 KB GP
2 L3 0306.rar 3 KB GP
3 L3 3311.rar 4 KB GP
4 L1 0018.zip 10 KB GP
5 L1 1233.zip 2 KB GP
6 L2 3335.zip 0 KB GP
7 L2 9909.zip 0 KB GP
8 L3 0307.zip 5 KB GP
|
NibelungXXX |
07-07-2013 19:36 2180813 |
Foreigner, спасибо все получилось, ваш скрипт понравился
|
NibelungXXX |
12-08-2013 18:24 2200419 |
Подскажите как побороться..
Появились архивы с part01, part02 и сбивают все выравнивание..
Суть программы, все архивы zip и rаr записывает в лог, по порядку, выше все расписано было..
Код:
@echo off
setlocal
pushd "%cd%"
set "cnt=100"
for /f "tokens=*" %%i in ("%cd%") do set "name=%%~nxi"
for /f "delims=" %%i in ('dir /b/a-d "%cd%\*.zip" "%cd%\*.rar" 2^>nul') do call:1 "%%i"
set /a cnt-=100
1>"%cd%\%name%p.txt" (
for /f "tokens=2 delims==" %%i in ('set file_') do echo %%i
)
popd
goto:eof
:1
set /a cnt+=1
set /a n=cnt-100
set "n=???%n%"
set "n=%n:~-3%"
set "fname=%~1"
set "fname=%fname:~-30%"
set /a size=%~z1 / 1024 +1
set "size=?????????%size% KБ"
set "size=%size:~-10%"
set "file_%cnt%=%n:?= %. %fname:?= % %size:?= % CD % DVD "
Стало с этими part01 криво писать, потому что название отличается ровно на табуляцию((..Выглядит так:
Код:
1. bakup 0802.zip 4272 KБ CD DVD
2. bakup 0802.part01.rar 70411 KБ CD DVD
3. bakup 0802.rar 145815 KБ CD DVD
а надо так:
Код:
1. bakup 0802.zip 4272 KБ CD DVD
2. bakup 0802.part01.rar 70411 KБ CD DVD
3. bakup 0802.rar 145815 KБ CD DVD
|
NibelungXXX, попробуйте такую:
читать дальше »
Последнюю строку Вашего скрипта удалить.
Добавить:
Код:
call :EchoTab "%n:?= %. %fname:?= %" 4 "%size:?= % CD % DVD" "file_%cnt%"
exit /B
:EchoTab
:: %1 - текст до табуляции
:: %2 - максимальное кол-во знаков табуляции в конце текста
:: %3 - текст после табуляции
:: %4 - переменная, куда сохраняем результат
set "text=%~1"
set tabs=%~2
for /L %%C in (7,8,200) do (
if "!text:~%%C,1!" neq "" (set /A tabs-=1) else (goto ext_EchoTab)
)
:ext_EchoTab
for /L %%C in (1,1,%tabs%) do set "text=!text! "
set "%~4=%text%%~3"
exit /B
Вторая строка - вместо setlocal напишите setlocal EnableDelayedExpansion
См. call :EchoTab - я там 4 поставил (в первой строке). Можете подкорректировать под себя макс. кол-во TAB-ов.
|
NibelungXXX |
14-08-2013 20:34 2201673 |
Diskretor, спасибо, правда не работала, пока вот так не сделал:
Код:
call :EchoTab " %n:?= %. %fname:?= %" 4 "%size:?= % CD DVD %%" "file_%cnt%"
|
Время: 11:31.
© OSzone.net 2001-