Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Цитата alpap:
ну 500 еще не так много, конечно, у меня уходит 8сек и я скажу вам что это очень много для подобной операции »
На моём десятилетнем ноуте на Ваш батник уходит 40 сек, и это напрягает.
Попробовал нарисовать гибрид батника и js-скрипта. Делается мигом.
Код: Выделить весь код
@set @E=1; /*

@Echo Off

Set "FileIn=Z:\Soft_In\тра ля ля.TXT"
Set "NStrok=400 300 200 100"

Cscript //NoLogo /E:jscript "%~dpnx0" "%FileIn%" %NStrok%

GoTo :Eof

*/

var i;
var oArg = WScript.Arguments;

var NCount=oArg.Count();

if (NCount<2) {
	WScript.Echo("═х ттхфхэ√ эхюсїюфшь√х рЁуєьхэЄ√");
} else {
	NCount=NCount-2;
	
	var NStrok= new Array(NCount);
	var NFile0=oArg(0);

	NFile0=NFile0.replace(/\\/g,"\\\\");

	var FSO=WScript.CreateObject("Scripting.FileSystemObject");

	var PFN=FSO.GetParentFolderName(NFile0);
	if (PFN != '') PFN+='\\\\';

	var BN=FSO.GetBaseName(NFile0);	
	var EN=FSO.GetExtensionName(NFile0);	
	
	for (i=1; i<=NCount+1; i++) NStrok[i-1]=oArg(i);

	var j,ij,len;

	for (i=0; i<=NCount; i++) {
		for (j=i; j<=NCount; j++) {
			if (NStrok[i]>NStrok[j]) {
				ij=NStrok[i];
				NStrok[i]=NStrok[j];
				NStrok[j]=ij;				
	}       }       }
	
	var F=FSO.OpenTextFile(NFile0,1,false);
	var Sall=F.ReadAll();
	var Mass=Sall.split('\r\n');
	F.Close();
	
	len = Mass.length;
	Sall='';
	j=0;
	ij=NStrok[j];

	for (i = 0; i < len; ++i) {
		if (i != 0) Sall+='\r\n';
		Sall+=Mass[i];

		if (i+1==ij) {
			// WScript.Echo(PFN+BN+'-'+ij+'.'+EN);
			F=FSO.OpenTextFile(PFN+BN+'-'+ij+'.'+EN,2,true);
			F.Write(Sall);
			F.Close();

			j++;
			while (j<=NCount) {
				if (ij != NStrok[j]) break;
				j++;
			}
			if (j>NCount) break;
			ij=NStrok[j];
		}
	} 			
}
А вообще-то очень плохо, что нет стандартной утилиты для того, чтобы прочесть заданное кол-во строк в батнике
Гораздо интереснее написать батник из нескольких строк, чем несколько десятков в WSH-скрипте.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 10-05-2017 в 23:13.


Отправлено: 23:04, 10-05-2017 | #4