Нужен совет по batch командам

закройщик
3/29/2006, 4:37:10 PM
я не програмист, поэтому прошу совета.
нужно разрезать файл на ХХХ частей при помощи примитивных batch команд, как это сделать? умею только склеивать, а резать не получается ))
AngeLR
3/29/2006, 7:33:03 PM
насколько я знаю, командами "дос" можно только слепить файлы, а разрезать нельзя... выход - специальная утилита.
закройщик
3/29/2006, 8:06:47 PM
во-во, я тоже сколько справочников по этому делу обсмотрел не нашел, вот мне и стало подозрительно, клеить можно, а резать нет. прикольно конечно...
DELETED
3/29/2006, 8:55:20 PM
Ага, стандартными нельзя. Но с помощью WSH (Windows Scripting Host), который по умолчанию есть уже во всех виндах, можно резать файлы одним батником.
закройщик
3/30/2006, 1:26:57 AM
(JeyLo @ 29.03.2006 - время: 15:55) Ага, стандартными нельзя. Но с помощью WSH (Windows Scripting Host), который по умолчанию есть уже во всех виндах, можно резать файлы одним батником.
с этого места поподробней, пжалста...
DELETED
3/30/2006, 7:11:52 PM
Обработки ошибок, сообщений и прочего нет. Только пример рабочего кода. :)

split.bat
(JeyLo)@echo off
@echo Option Explicit > split.vbs
@echo dim FileSystem, SourceFile, SourceStream, DestinationFileName, DestinationFile, DestinationStream, CurrentChunk >> split.vbs
@echo set FileSystem  = CreateObject("Scripting.FileSystemObject") >> split.vbs
@echo set SourceFile  = FileSystem.GetFile(WScript.Arguments(0)) >> split.vbs
@echo set SourceStream  = SourceFile.OpenAsTextStream (1, 0) >> split.vbs
@echo CurrentChunk  = 1 >> split.vbs
@echo do until SourceStream.AtEndOfStream >> split.vbs
@echo DestinationFileName  = FileSystem.GetFileName(WScript.Arguments(0)) ^& "." ^& CurrentChunk >> split.vbs
@echo call FileSystem.CreateTextFile (DestinationFileName, true, false ) >> split.vbs
@echo set DestinationFile  = FileSystem.GetFile(DestinationFileName) >> split.vbs
@echo set DestinationStream  = DestinationFile.OpenAsTextStream ( 2, 0 ) >> split.vbs
@echo DestinationStream.Write ( SourceStream.Read ( WScript.Arguments(1) ) ) >> split.vbs
@echo DestinationStream.Close >> split.vbs
@echo CurrentChunk = CurrentChunk + 1 >> split.vbs
@echo loop  >> split.vbs
@echo SourceStream.Close >> split.vbs
call wscript split.vbs %1 %2
erase split.vbs
@echo on


splitter.vbs
(JeyLo)Option Explicit

' Декларируем...
dim FileSystem, SourceFile, SourceStream, DestinationFileName, DestinationFile, DestinationStream, CurrentChunk

' Создаем объекты
set FileSystem  = CreateObject("Scripting.FileSystemObject")
set SourceFile  = FileSystem.GetFile(WScript.Arguments(0))
set SourceStream  = SourceFile.OpenAsTextStream (1, 0)
CurrentChunk  = 1

' Начинаем разбивку
do until SourceStream.AtEndOfStream
DestinationFileName  = FileSystem.GetFileName(WScript.Arguments(0)) & "." & CurrentChunk
call FileSystem.CreateTextFile (DestinationFileName, true, false )
set DestinationFile  = FileSystem.GetFile(DestinationFileName)
set DestinationStream  = DestinationFile.OpenAsTextStream ( 2, 0 )

DestinationStream.Write ( SourceStream.Read ( WScript.Arguments(1) ) )
DestinationStream.Close

CurrentChunk = CurrentChunk + 1

loop

' И выходим к чертовой матери
SourceStream.Close


Первый параметр - файл, второй - размер блока в байтах.
split.bat myFile.zip 100000
или
splitter.vbs myFile.zip 100000
или
wscript splitter.vbs myFile.zip 100000.

Батничек есть не что иное, как обертка для двух последних команд. Для нелюбителей расширений vbs. :)
AngeLR
3/30/2006, 7:36:59 PM
жестко ты придумал - батником временный скрипт писать lol.gif это ж на сколько на до ненавидеть vbs и тем не менее испытывать потребность в нём.
DELETED
3/30/2006, 7:42:39 PM
(AngeLR @ 30.03.2006 - время: 14:36) жестко ты придумал - батником временный скрипт писать lol.gif это ж на сколько на до ненавидеть vbs и тем не менее испытывать потребность в нём.
Шоб враги не догадались. Да и тема про батники.... :)
farhad
4/8/2006, 5:40:35 PM
Здорово, только это практически обычная программа - но с другой стороны: батник и работает, значит все в тему.
bara-igor
5/15/2006, 12:59:01 PM
(закройщик @ 29.03.2006 - время: 12:37) я не програмист, поэтому прошу совета.
нужно разрезать файл на ХХХ частей при помощи примитивных batch команд, как это сделать? умею только склеивать, а резать не получается ))
Не уверен, что bat-команды, что - то дадут!(copy, mode, cut и т.д. ) А любой файл можно разрезать любым архиватором, отправив их на дискеты.
закройщик
5/15/2006, 3:32:19 PM
(bara-igor @ 15.05.2006 - время: 08:59) Не уверен, что bat-команды, что - то дадут!(copy, mode, cut и т.д. ) А любой файл можно разрезать любым архиватором, отправив их на дискеты.
Когда нет ничего под рукой (система чистая) то BATCH файл - это лучший выбор ))
Сколько раз он меня выручал!!! Практически в любой области пригождается. Ношу всегда с собой на флэшке справочник по бат-командам.
DELETED
10/15/2006, 12:08:10 PM
(farhad @ 08.04.2006 - время: 20:40)Здорово, только это практически обычная программа - но с другой стороны: батник и работает, значит все в тему.
Тогда вот батник для редактирования файлов в формате MS Word... (редактор.bat)

@echo off
cls
echo
echo "Не люблю программы Microsoft!!!"
echo
winword.exe %1 %2 %3 %4 %5



lol.gif lol.gif lol.gif lol.gif