Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

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

Ветеран


Contributor


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

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


Brety,
Вот батник со встроенным js-скриптом, который умеет консолидировать файлы в указанной папке и разделять консолидированный файл
Код: Выделить весь код
@set @E=1; /*

@Echo Off
cls

Set "FileIn=Z:\Box_In\*.txt"
Set "FileOut=Z:\Box_In\Rezult.txt"

Echo ------------------------------
Echo Press:1 for Consolidation "%FileIn%"
Echo Press:2 for Separation "%FileOut%"

Set /P X=Press:
If Not "%X%"=="1" If Not "%X%"=="2" (
	Echo !!! Option "%X%" not defined 
	Echo Script %~dpnx0 canceled
	Echo ------------------------------
	Pause
	GoTo :Eof
)
If %X%==1 Call :Consolidate "%FileIn%" "%FileOut%"
If %X%==2 Call :Separate "%FileIn%" "%FileOut%"
GoTo :Eof

:Consolidate
rem	GoTo :Continue
	If Exist "%~2" (
		Echo !!! File "%~2" already exists
		Echo Script %~dpnx0 canceled
		Pause
		GoTo :Eof
	)
	:Continue

	rem ------------------------------ Backup input files
	Set "DateTime=%Date%-%Time%"
	Set "DateTime=%DateTime: =0%" 
	Set "DateTime=%DateTime::=%" 
	Set "DateTime=%DateTime:/=%" 
	Set "DateTime=%DateTime:,=%" 
	"C:\Program Files\7-Zip\7z.exe" a "%~2-%DateTime%.7Z" "%~1"
	rem ------------------------------

	<Nul Set /P X=>"%~2"
 
	FOR %%f IN ("%~1") DO If /I Not "%%f"=="%~2" (
		>"%~2.tmp.tmp" (Echo ==========%%~nxf==========)
		Copy "%~2"+"%~2.tmp.tmp"+"%%f" "%~2.tmp" /B /Y >Nul && (
			Del "%%f" >nul
			Move /Y "%~2.tmp" "%~2" >Nul
		) 
	)
	Del "%~2.tmp.tmp" >Nul 2>&1 
	Del "%~2.tmp" >Nul 2>&1 
GoTo :Eof

:Separate
	Set "$InFile=%~dpnx2"
	Set "$InFile=%$InFile:\=\\%"
	Set "$OutPath=%~dp1"
	Set "$OutPath=%$OutPath:\=\\%"
	cscript //NoLogo /E:jscript "%~dpnx0" "%$InFile%" "%$OutPath%"
GoTo :Eof
*/
var oArg=WScript.Arguments;        
if (oArg.Count()>1) {
	WScript.Echo(oArg(0),'\t',oArg(1));
	var FileTxt=oArg(0); 
	var PathOut=oArg(1);

	var Txt,err,nlen,i;

	var FSO=WScript.CreateObject("Scripting.FileSystemObject");
	try {Txt=FSO.OpenTextFile(FileTxt);}
	catch (err) {
		if (err != 0) {
			WScript.Echo("Open file "+FileTxt+"\nerror: "+err.number+"\n"+err.description);
			WScript.Quit();
		}
	}
	var strContent = Txt.ReadAll();
	Txt.Close();
	var OutMass = strContent.split('==========');

	for (var i = 2; i < OutMass.length; i=i+2) {
		WScript.Echo(PathOut+OutMass[i-1]);
		Txt=FSO.CreateTextFile(PathOut+OutMass[i-1],true);
		Txt.Write(OutMass[i].substr(2));
		Txt.Close();
	}
}
else {WScript.Echo('using script \n======== \n\n'+'cscript.exe //nologo "scriptname.js" "input text" >"outputfile.txt"');}

Если запустить консолидацию файлов а затем без изменения разбиение на файлы, длина файлов будет равна исходной.
Перед консолидацией делается страховочный архив посредством архиватора 7z.
При консолидации исходные файлы удаляются.
Пропишите свои пути.
Если пропИшите:
Set "FileIn=*.txt"
Set "FileOut=Rezult.txt"
то батник должен располагаться в папке с файлами.
Цитата Brety:
Я думал для спецов это было бы как два пальца »
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение.

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


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

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:24, 27-10-2017 | #10