убогий виндовый "шелл-скрипт"

yolki

можно ли на нём сделать такую вещь:
есть файлы
zz0.10.dat,
zz0.15.dat,
zz0.20.dat,
...
zz0.80.dat
с некоторыми данными. в каждом файле ровно одна строчка, типа

0.8098

Хочу получить файл all.dat такого содержимого:

0.10 0.8098
0.15 0.7277
0.20 0.6534
0.25 0.5860
0.30 0.5251
0.35 0.4686
0.40 0.4176
0.45 0.3696
0.50 0.3255
0.55 0.2845
0.60 0.2455
0.65 0.2095
0.70 0.1749
0.75 0.1425
0.80 0.1117

первый столбец - некоторая выдержка из имени файла (с 3 по 6 позицию второй столбец - содержимое соотв. файла.
возможно ли?

Marinavo_0507

неужели ставить cygwin дольше, чем ждать умного ответа в форуме?

evgen5555

Ты не бот Дарксайда случайно?
Давай лучше ты поставишь себе ActivePerl и не будешь трахать мозг?

yolki

если бы мне эту фигню надо было сделать один раз у себя, я бы написал на паскале программулю.
Но мне эту штуку надо раздать ~10 пользователям, и каждому ставить цигвин/активперл влом.
ладно, раздам им экзешник на паскале

yolki

а вот то, что в винде у echo нет параметра -n это плохо...
очень мне его не хватает

Hastya

можно
но геморно будет
файлы можно сливать через >>
а первый столбец надо обязательно из имени файла брать или можно самому вычислить?

Marinavo_0507

так что там насчёт wsh тогда?

ifani

используй WSH:о)
только я вот не знаю, начиная с какой версии винды, он есть по умолчанию...

ifani

блин, не успел%

artimon

@echo off
if .%1. == .. (
cmd /v:on /c %0 x
goto exit
)
for %%a in (zz*.dat) do (
set x=%%a
for /F %%i in (!x!) do echo !x:~2,4! %%i
)
:exit

Да, я извращенец

artimon

Лучше так:
@echo off
if .%1. == .. (
cmd /v:on /c %0 x
goto exit
)
if EXIST all.dat del all.dat
for %%a in (zz*.dat) do (
set x=%%a
for /F %%i in (!x!) do echo !x:~2,4! %%i>> all.dat
)
:exit

Julie16

Свят свят свят

Marinavo_0507

а что, на яве типа проще?

artimon

Никто не сказал что будет легко

yolki

О! Я потрясён! Это круто.
вот только небольшая проблема...

0.55 0.2845
0.60 0.2455
0.45 0.3696
0.50 0.3255
0.75 0.1425
0.80 0.1117
0.65 0.2095
0.70 0.1749
0.15 0.7277
0.20 0.6534
0.10 0.8098
0.35 0.4686
0.40 0.4176
0.25 0.5860
0.30 0.5251

bastii

с 98ой

yolki

Всем спасибо, особенное.
Разрешил вот так:

@echo off
if .%1. == .. (
cmd /v:on /c %0 x
goto exit
)
if EXIST all.dat del all.dat
dir /on /b *.dat >list.txt
for /F %%a in (list.txt) do (
set x=%%a
for /F %%i in (!x!) do echo !x:~2,4! %%i>> all.dat
)
:exit

artimon

@echo off
if .%1. == .. (
cmd /v:on /c %0 x
goto exit
)
if EXIST all.dat del all.dat
for /F %%a in ('dir /b /o:n zz*') do (
set x=%%a
for /F %%i in (!x!) do echo !x:~2,4! %%i>> all.dat
)
type all.dat
:exit

artimon

Julie16

Не знаю. Никогда в жизни на яве не писал

Marinavo_0507

Повезло.

stm7884696

А можешь написать, как по первым 10 символам названия файлов в директории создать поддиректорию с именем = этим символам?
причем надо просмотреть все файлы в текущей директории...

artimon

for /?
set /?
if /?
md /?
Мне лень

stm7884696

а я вот мучаюсь...

bleyman

Респект!

Hastya

можно проще, через
SETLOCAL ENABLEDELAYEDEXPANSION
хотя с cmd тоже интересный вариант

artimon

Н-да.
Доку по setlocal не догадался прочитать
Оставить комментарий
Имя или ник:
Комментарий: