Есть две папки: "ABC" и "DEF". В них хранится одинаковое количество файлов с идентичными именами. К примеру:
ABC:
File1.txt
File2.txt
...
DEF:
File1.txt
File2.txt
...
Кодировки и содержимое всех файлов различны. Нужно склеить файлы с одинаковыми именами между собой:
XYZ:
File1.txt = File1.txt (из папки ABC) + File1.txt (из папки DEF)
File2.txt = File2.txt (из папки ABC) + File2.txt (из папки DEF)
...
Подскажите, как это можно сделать в AkelPad? Объединить командой copy не получится из-за разницы кодировок.
Posted: Sat Oct 08, 2016 3:48 pm
by Wio
Отвечаю сам себе Возможно, кому-нибудь ещё пригодится мой способ. Буду рад, если подскажите альтернативный путь.
Решение: нужно привести все файлы к единой кодировке UTF-8 (без BOM) с помощью AkelPad в режиме MDI/PMDI. Далее файлы склеиваются bat-ником с помощью команды copy. Примерно так:
var aFolder = ["C:\\Test\\abc\",
"C:\\Test\\def\",
"C:\\Test\\xyz\"];
var nCP = 1200 /*UTF-16LE*/; //code page for WriteFile()
var bBOM = true;
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var oEnum;
var sName;
var sContent;
var i;
for (i = 0; i < 3; ++i)
{
if (! oFSO.FolderExists(aFolder[i]))
{
WScript.Echo(aFolder[i] + "\nFolder does not exist!");
WScript.Quit();
}
}
oEnum = new Enumerator(oFSO.GetFolder(aFolder[0]).Files);
for (i = 0; ! oEnum.atEnd(); ++i, oEnum.moveNext())
{
sName = oFSO.GetFileName(oEnum.item());
sContent = AkelPad.ReadFile(aFolder[0] + sName, 0x1D /*ADT_NOMESSAGES|ADT_DETECTBOM|ADT_DETECTCODEPAGE|ADT_BINARYERROR*/) +
AkelPad.ReadFile(aFolder[1] + sName, 0x1D /*ADT_NOMESSAGES|ADT_DETECTBOM|ADT_DETECTCODEPAGE|ADT_BINARYERROR*/);
AkelPad.WriteFile(aFolder[2] + sName, sContent, sContent.length, nCP, bBOM);
}
WScript.Echo("Saved files: " + i);
Posted: Sun Oct 09, 2016 7:15 am
by Wio
KDJ
Thank you so much, it works perfectly! This is even more versatile method than joining text with bat-file. Your script can be adapted for different file concatenation tasks.
Перевод:
Большое спасибо, всё отлично работает! Это даже более универсальный метод, чем склеивать текст bat-ником. Ваш скрипт можно адаптировать для различных вариантов соединения файлов.