Brety,
Вот батник со встроенным js-скриптом, который умеет консолидировать файлы в указанной папке и разделять консолидированный файл
Код:
![Выделить весь код](images/misc/selectcode.png)
@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:
Я думал для спецов это было бы как два пальца »
|
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение.