Macro/投稿/173
をテンプレートにして作成
Land.to
[
ホーム
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* Grepから正規表現複数キーワード置換 [#b7021703]
-ページ: [[Macro/投稿]]
-作者: [[ぼさがみ]]
-カテゴリー: js
-投稿日: 2007-05-10 (木) 14:30:46
** メッセージ [#v93cf8f9]
#code(javascript){{
//MultiRepExp.js
//Grep結果から正規表現で一気に置換します。
//複数キーワード置換対応。
var oFileSys = new ActiveXObject("Scripting.FileSystemOb...
var oShell = new ActiveXObject("WScript.Shell");
var oVbScript = new ActiveXObject("ScriptControl");
function VbsInputBox(sMessage, sTitle, sDefault){
oVbScript.Language = "VBScript";
oVbScript.AddCode("Function InputBox2(sMessage, sTitle,...
var sResult = oVbScript.Run("InputBox2", sMessage, sTit...
return sResult;
}
Main();
function Main(){
Editor.SelectAll(0);
var sAllText = Editor.GetSelectedString();
if(sAllText.indexOf("□検索条件") < 0){
oShell.Popup("Grepを先に実行してください。", 0 , "Mult...
return;
}
//キーワード複数入力
var aRegExp = new Array();
while(true){
var sSearch = VbsInputBox("検索するテキストを入力して...
if(sSearch == null) return;
if(sSearch == "") break;
var sTransfer = VbsInputBox("置換後のテキストを入力し...
if(sTransfer == null) return;
var oRegExp = new RegExp(sSearch, "gm");
oRegExp.sBefore = sSearch;
oRegExp.sAfter = sTransfer;
aRegExp.push(oRegExp);
}
if(aRegExp.length == 0){
return;
}
var sMessage = "置換しますか?\n";
for(var nLoop = 0; nLoop < aRegExp.length; nLoop++){
sMessage += "置換前:" + aRegExp[nLoop].sBefore + "\n";
sMessage += "置換後:" + aRegExp[nLoop].sAfter + "\n";
}
if(oShell.Popup(sMessage, 0 , "MultiRepExp", 1) != 1){
return;
}
//Grep画面を解析
var aSearchPath = new Array();
sAllText = sAllText.substr(sAllText.indexOf("□検索条件"...
sAllText = sAllText.substr(sAllText.indexOf("\r\n\r\n"));
var aAllTextLine = sAllText.split("\r\n");
var oPathCheck = new ActiveXObject("Scripting.Dictionar...
for(var nLoop3 = 0; nLoop3 < aAllTextLine.length; nLoop...
var sLine = aAllTextLine[nLoop3];
if(sLine.indexOf(" [") >= 0){
sLine = sLine.substr(0, sLine.indexOf(" [") + 2);
sLine = sLine.substr(0, sLine.lastIndexOf(((sLine.ind...
if(oFileSys.FileExists(sLine) && !oPathCheck(sLine)){
oPathCheck(sLine) = true;
aSearchPath.push(sLine);
}
}
}
//ひたすら置換
for(var nLoop = 0; nLoop < aSearchPath.length; nLoop++){
var sPath = aSearchPath[nLoop];
try{
var oFile = oFileSys.OpenTextFile(sPath, 1);
if(oFile.AtEndOfStream){
oFile.Close();
continue;
}
}
catch(excep){
oShell.Popup("読み込みエラーです。\n" + sPath + "\n" ...
return;
}
var sText = oFile.ReadAll();
oFile.Close();
for(var nLoop4 = 0; nLoop4 < aRegExp.length; nLoop4++){
var sText = sText.replace(aRegExp[nLoop4], aRegExp[nL...
}
try{
var oDestFile = oFileSys.CreateTextFile(sPath, true)
oDestFile.Write(sText)
oDestFile.Close();
}
catch(excep){
oShell.Popup("書き込みエラーです。\n" + sPath + "\n" ...
return;
}
}
oShell.Popup("正常終了しました。", 0 , "MultiRepExp");
}
}}
----
- EUC-jpのファイルはだめです。 -- [[sheep]] &new{2007-0...
- Macro - 133 のような、詳しい使用方法の説明をして欲しい...
#comment
終了行:
* Grepから正規表現複数キーワード置換 [#b7021703]
-ページ: [[Macro/投稿]]
-作者: [[ぼさがみ]]
-カテゴリー: js
-投稿日: 2007-05-10 (木) 14:30:46
** メッセージ [#v93cf8f9]
#code(javascript){{
//MultiRepExp.js
//Grep結果から正規表現で一気に置換します。
//複数キーワード置換対応。
var oFileSys = new ActiveXObject("Scripting.FileSystemOb...
var oShell = new ActiveXObject("WScript.Shell");
var oVbScript = new ActiveXObject("ScriptControl");
function VbsInputBox(sMessage, sTitle, sDefault){
oVbScript.Language = "VBScript";
oVbScript.AddCode("Function InputBox2(sMessage, sTitle,...
var sResult = oVbScript.Run("InputBox2", sMessage, sTit...
return sResult;
}
Main();
function Main(){
Editor.SelectAll(0);
var sAllText = Editor.GetSelectedString();
if(sAllText.indexOf("□検索条件") < 0){
oShell.Popup("Grepを先に実行してください。", 0 , "Mult...
return;
}
//キーワード複数入力
var aRegExp = new Array();
while(true){
var sSearch = VbsInputBox("検索するテキストを入力して...
if(sSearch == null) return;
if(sSearch == "") break;
var sTransfer = VbsInputBox("置換後のテキストを入力し...
if(sTransfer == null) return;
var oRegExp = new RegExp(sSearch, "gm");
oRegExp.sBefore = sSearch;
oRegExp.sAfter = sTransfer;
aRegExp.push(oRegExp);
}
if(aRegExp.length == 0){
return;
}
var sMessage = "置換しますか?\n";
for(var nLoop = 0; nLoop < aRegExp.length; nLoop++){
sMessage += "置換前:" + aRegExp[nLoop].sBefore + "\n";
sMessage += "置換後:" + aRegExp[nLoop].sAfter + "\n";
}
if(oShell.Popup(sMessage, 0 , "MultiRepExp", 1) != 1){
return;
}
//Grep画面を解析
var aSearchPath = new Array();
sAllText = sAllText.substr(sAllText.indexOf("□検索条件"...
sAllText = sAllText.substr(sAllText.indexOf("\r\n\r\n"));
var aAllTextLine = sAllText.split("\r\n");
var oPathCheck = new ActiveXObject("Scripting.Dictionar...
for(var nLoop3 = 0; nLoop3 < aAllTextLine.length; nLoop...
var sLine = aAllTextLine[nLoop3];
if(sLine.indexOf(" [") >= 0){
sLine = sLine.substr(0, sLine.indexOf(" [") + 2);
sLine = sLine.substr(0, sLine.lastIndexOf(((sLine.ind...
if(oFileSys.FileExists(sLine) && !oPathCheck(sLine)){
oPathCheck(sLine) = true;
aSearchPath.push(sLine);
}
}
}
//ひたすら置換
for(var nLoop = 0; nLoop < aSearchPath.length; nLoop++){
var sPath = aSearchPath[nLoop];
try{
var oFile = oFileSys.OpenTextFile(sPath, 1);
if(oFile.AtEndOfStream){
oFile.Close();
continue;
}
}
catch(excep){
oShell.Popup("読み込みエラーです。\n" + sPath + "\n" ...
return;
}
var sText = oFile.ReadAll();
oFile.Close();
for(var nLoop4 = 0; nLoop4 < aRegExp.length; nLoop4++){
var sText = sText.replace(aRegExp[nLoop4], aRegExp[nL...
}
try{
var oDestFile = oFileSys.CreateTextFile(sPath, true)
oDestFile.Write(sText)
oDestFile.Close();
}
catch(excep){
oShell.Popup("書き込みエラーです。\n" + sPath + "\n" ...
return;
}
}
oShell.Popup("正常終了しました。", 0 , "MultiRepExp");
}
}}
----
- EUC-jpのファイルはだめです。 -- [[sheep]] &new{2007-0...
- Macro - 133 のような、詳しい使用方法の説明をして欲しい...
#comment
ページ名: