Skip to content

Instantly share code, notes, and snippets.

@guinurmi
Created June 13, 2018 15:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guinurmi/a53db302c762440ab7be8b64df14b265 to your computer and use it in GitHub Desktop.
Save guinurmi/a53db302c762440ab7be8b64df14b265 to your computer and use it in GitHub Desktop.
EpgNaviの番組表ファイル内の1分番組を修復するバッチファイル
@if(0)==(0) ECHO OFF
rem EpgNavi.exeがあるフォルダーに置き、ダブルクリックすると、8日分の番組表ファイル内の1分番組を修復します。
if DEFINED ndeExeDirPath cd /d "%ndeExeDirPath%\..\.."
if "%~1"=="-all" (for %%I in (DATA\EPG\??????_TVking.dat ) do CScript //E:JScript //NoLogo "%~f0" %%I
) else ( for /f %%I in ('CScript //E:JScript //NoLogo "%~f0"') do CScript //E:JScript //NoLogo "%~f0" %%I
)
if "%~0"=="%~f0" pause
GOTO :EOF
@end
if (WScript.Arguments.Unnamed.length < 1) {
var objDate = new Date();
if (objDate.getHours() < 5) {
objDate.setDate(objDate.getDate() - 1);
}
for (var ii = 0; ii < 8; ii++) {
var year = ( '' + objDate.getFullYear() ).slice(-2),
month = ('0' + (objDate.getMonth() + 1)).slice(-2),
day = ('0' + objDate.getDate() ).slice(-2);
WScript.Echo("DATA\\EPG\\" + year + month + day + "_TVking.dat");
objDate.setDate(objDate.getDate() + 1);
}
WScript.Quit(1);
}
var fso, f, s;
var ForReading = 1, ForWriting = 2;
s = "";
fso = new ActiveXObject("Scripting.FileSystemObject");
var filespec = fso.GetAbsolutePathName(WScript.Arguments.Unnamed(0));
var preline, predate, curline, curdate, cur6, progs = 0, log, fldr;
f = fso.OpenTextFile(filespec, ForReading, false);
while (!f.AtEndOfStream) {
curline = f.ReadLine().split(",");
curdate = new Date(curline[4] + "/" + curline[5] + "/" + curline[3] + " " + curline[6]);
cur6 = "00:00" == curline[6] ? "24:00" : curline[6];
if (preline) {
if (preline[7] != cur6 && curdate - predate == 60 * 1000) {
preline[7] = cur6;
progs++;
}
s += preline + "\r\n";
}
preline = curline;
predate = curdate;
}
f.Close();
s += preline + "\r\n";
log = fso.GetFileName(filespec) + ":\t" + (" " + progs).slice(-3) + "個の1分番組を修復。";
if (!progs) {
WScript.Echo(log);
WScript.Quit(2);
}
WScript.Echo(log + "バックアップを作成。");
if (!fso.FolderExists(fldr = fso.GetParentFolderName(filespec) + "\\orig")) {
fso.CreateFolder(fldr);
}
fso.CopyFile(filespec, fldr + "\\");
f = fso.OpenTextFile(filespec, ForWriting, true)
f.Write(s);
f.Close();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment