- 追加された行はこの色です。
- 削除された行はこの色です。
- JScript へ行く。
[[SoftwareEngineering]]
#author("2021-11-26T08:49:12+09:00","","")
[[ソフトウェア開発>SoftwareEngineering]] / [[JScript>./]]
情報が集まってきたら整理する。
それまではこのページに書いていく。
#contents
*実行中のスクリプトが存在するパスを取得する。 [#e12a2df7]
#highlightjs([javascript])
var _DirectoryPath = WScript.ScriptFullName.replace(/[\\\/]([^\\\/]+)$/, '');
*XMLの操作 [#d6f233a5]
**Microsoft.XMLDOMを使用して、XMLを読み込む [#cb53584d]
-JScript
#highlightjs([javascript])
var _XMLDom = new ActiveXObject('Microsoft.XMLDOM');
_XMLDom.load("config.xml")
_XMLDom.async = false;
var _Nodes = _XMLDom.documentElement.childNodes;
for (var _Index = 0; _Index < _Nodes.length; _Index++) {
var _Node = _Nodes[_Index];
WScript.Echo(_Node.getAttribute('name'));
WScript.Echo(_Node.getAttribute('adspath'));
WScript.Echo(_Node.getAttribute('user'));
WScript.Echo(_Node.getAttribute('pass'));
WScript.Echo('');
WScript.Echo('');
}
_XMLDom = null;
-XML
<?xml version="1.0" encoding="Shift_JIS"?>
<config>
<domain name="TopDomain" adspath="LDAP://DC01.codereign.org/DC=codereign,DC=org" user="user0001" pass="TopDomainPassword" />
<domain name="SubDomain" adspath="LDAP://DC02.sub.codereign.org/DC=sub,DC=codereign,DC=org" user="user0002" pass="SubDomainPassword" />
</config>
*Active Directory [#lbbb4fb7]
-[[ユーザーを作成する>./ActiveDirectory/CreateUser]]
-[[ユーザーを削除する>./ActiveDirectory/DeleteUser]]
-[[グループを作成する>./ActiveDirectory/CreateGroup]]
-[[ユーザーオブジェクトのプロパティを表示する>./ActiveDirectory/OutputUserProperty]]
-[[グループのメンバを取得する>./ActiveDirectory/GetGroupMember]]
*Microsoft Office [#o642b4f3]
-Officeファイルを読み取り専用で開く
#highlightjs([javascript])
/// ---------------------------------------------------------------------------
/// <summary>Microsoft Office ファイルを読取専用で開くスクリプト</summary>
/// <remarks>対応済みアプリケーション:Word, Excel, MSProject, Visio, PowerPoint</remarks>
/// <author>Reign</author>
/// <homepage href="http://www.codereign.org/">CodeReign</homepage>
/// ---------------------------------------------------------------------------
if (WScript.Arguments.length == 0) {
WScript.Echo('開きたいファイルをドラック&ドロップしてください。');
WScript.Quit();
}
var _Word = null;
var _Excel = null;
var _Project = null;
var _Visio = null;
var _PowerPoint = null;
for (var _Index = 0; _Index < WScript.Arguments.length; _Index++) {
var _FilePath = WScript.Arguments(_Index);
var _Extension = _FilePath.replace(/.*\./, '');
if (_Extension.toLowerCase() == 'doc') {
if (_Word == null) _Word = new ActiveXObject('Word.Application');
_Word.Visible = true;
_Word.Documents.Open(_FilePath, null, true);
} else if (_Extension.toLowerCase() == 'xls') {
if (_Excel == null) _Excel = new ActiveXObject('Excel.Application');
_Excel.Visible = true;
_Excel.Workbooks.Open(_FilePath, null, true);
} else if (_Extension.toLowerCase() == 'mpp') {
if (_Project == null) _Project = new ActiveXObject('MSProject.Application');
_Project.Visible = true;
_Project.FileOpen(_FilePath, true);
} else if (_Extension.toLowerCase() == 'vsd') {
if (_Visio == null) _Visio = new ActiveXObject('Visio.Application');
_Visio.Visible = true;
_Visio.Documents.OpenEx(_FilePath, 2);
} else if (_Extension.toLowerCase() == 'ppt') {
if (_PowerPoint == null) _PowerPoint = new ActiveXObject('PowerPoint.Application');
_PowerPoint.Visible = true;
_PowerPoint.Presentations.Open(_FilePath, -1);
}
}
-新しいExcel Applicationでブックを開く
#highlightjs([javascript])
/// ---------------------------------------------------------------------------
/// <summary>新しいExcel Applicationでブックを開くスクリプト</summary>
/// <remarks></remarks>
/// <author>Reign</author>
/// <homepage href="http://www.codereign.org/">CodeReign</homepage>
/// ---------------------------------------------------------------------------
if (WScript.Arguments.length == 0) {
WScript.Echo('開きたいファイルをドラック&ドロップしてください。');
WScript.Quit();
}
var _Excel = new ActiveXObject('Excel.Application');
for (var _Index = 0; _Index < WScript.Arguments.length; _Index++) {
var _FilePath = WScript.Arguments(_Index);
var _Extension = _FilePath.replace(/.*\./, '');
_Excel.Visible = true;
_Excel.Workbooks.Open(_FilePath, null, false);
}
*入力ダイアログボックス [#i98533bb]
#highlightjs([javascript])
/// ---------------------------------------------------------------------------
/// <summary>入力ダイアログボックス</summary>
/// ---------------------------------------------------------------------------
function InputBox() {
this.script = new ActiveXObject('ScriptControl');
this.script.Language = 'VBScript';
this.script.AddCode('Function IB(prompt, ditle, default)\n IB = InputBox(prompt, ditle, default)\n End Function');
}
/// ---------------------------------------------------------------------------
/// <summary>入力ダイアログボックスを表示する</summary>
/// <param name="APrompt">ダイアログ ボックス内にメッセージとして表示する文字列</param>
/// <param name="ATitle">ダイアログ ボックスのタイトル バーに表示する文字列 </param>
/// <param name="ADefault">テキスト ボックスに既定値として表示する文字列</param>
/// ---------------------------------------------------------------------------
InputBox.prototype.prompt = function(APrompt, ATitle, ADefault) {
return this.script.Run('IB', APrompt, ATitle, ADefault);
}
var _InputBox = new InputBox();
var _InputText = _InputBox.prompt('APrompt', 'ATitle', 'ADefault');
WScript.Echo(_InputText);
*配列 [#w3a7dd65]
**二次元配列の縦と横を入れ替える [#c3a7636e]
#highlightjs([javascript])
/// ---------------------------------------------------------------------------
/// <summary>標準出力画面に値を表示する</summary>
/// ---------------------------------------------------------------------------
function echo(AMessages) {
var _Message = '';
for (var _Index = 0; _Index < arguments.length; _Index++) {
_Message += arguments[_Index];
}
WScript.Echo(_Message);
}
/// ---------------------------------------------------------------------------
/// <summary>縦横変換</summary>
/// ---------------------------------------------------------------------------
function transpose(ATable) {
var _MaxColumns = 0;
// 最大列数を取得
for (var _RowIndex = 0; _RowIndex < ATable.length; _RowIndex++) {
if (_MaxColumns < ATable[_RowIndex].length) _MaxColumns = ATable[_RowIndex].length;
}
// 縦横変換テーブルの初期化
var _Table = new Array(_MaxColumns);
for (var _RowIndex = 0; _RowIndex < _Table.length; _RowIndex++) {
_Table[_RowIndex] = new Array(ATable.length);
for (var _ColIndex = 0; _ColIndex < _Table[_RowIndex].length; _ColIndex++) {
_Table[_RowIndex][_ColIndex] = '';
}
}
// 縦横変換
for (var _RowIndex = 0; _RowIndex < ATable.length; _RowIndex++) {
for (var _ColIndex = 0; _ColIndex < ATable[_RowIndex].length; _ColIndex++) {
_Table[_ColIndex][_RowIndex] = ATable[_RowIndex][_ColIndex];
}
}
return _Table;
}
var _Table = [];
_Table.push(['1A', '1B', '1C']);
_Table.push(['2A', '2B', '2C']);
_Table.push(['3A', '3B']);
_Table.push(['4A', '4B', '4C']);
_Table.push(['5A', '5B', '5C']);
_Table.push(['6A', '6B', '6C', '6D']);
echo('縦横変換(入替前)');
for (var _RowIndex = 0; _RowIndex < _Table.length; _RowIndex++) {
echo(_Table[_RowIndex].join(","));
}
echo('');
echo('');
echo('縦横変換(入替後)');
_Table = transpose(_Table);
for (var _RowIndex = 0; _RowIndex < _Table.length; _RowIndex++) {
echo(_Table[_RowIndex].join('\t'));
}
*拡張子を取得する [#b047ba54]
#highlightjs([javascript])
/// ---------------------------------------------------------------------------
/// <summary>拡張子を戻す</summary>
/// ---------------------------------------------------------------------------
function getFileExtension(AFileName) {
var startExtensionIndex = AFileName.lastIndexOf('.');
if (startExtensionIndex < 0) return '';
if (startExtensionIndex == 0) return '';
return AFileName.substring(startExtensionIndex + 1);
}
*拡張子を除いたベース名を取得する [#o7cddf11]
#highlightjs([javascript])
/// ---------------------------------------------------------------------------
/// <summary>拡張子を除いたベース名を戻す</summary>
/// ---------------------------------------------------------------------------
function getFileNameWithoutExtension(AFileName) {
var startExtensionIndex = AFileName.lastIndexOf('.');
if (startExtensionIndex < 0) return AFileName;
if (startExtensionIndex == 0) return '';
return AFileName.substring(0, startExtensionIndex);
}
*テンプレート [#n60efa62]
-[[CSV読み込み>./org.codereign.jscript.io.CSVFileStream]]
*その他 [#h052d0c2]
-[[ファイルの読み書き>./ファイルの読み書き]]
*スクリプトと同じフォルダ内にあるファイルを取得する [#jae61ced]
#highlightjs([javascript])
var _Directory = WScript.ScriptFullName.replace(/[\\\/]([^\\\/]+)$/, '');
var _FileSystem = new ActiveXObject('Scripting.FileSystemObject');
var _Folder = _FileSystem.GetFolder(_Directory);
var _Files = new Enumerator(_Folder.files);
for (null; !_Files.atEnd(); _Files.moveNext()) {
WScript.Echo(_Files.item());
}