本文で「RegExp」の検索抽出結果:

D:\新しいフォルダ\jane\DoeView051128\Logs\2ch\外部板\wsh\1058829737.dat

お前ら、WindowsScripting使ってますか? Part3

158 名前:名無し~3.EXE sage 投稿日:03/11/04 12:34 ID:ZPgYCqbJ
>>156
入出力をどうするつもりか知らないけど。

str1 = "Syrup16g - 明日を落としても 4:58"
str2 = "2003/11/04 0:19:52"
Set bobj = WScript.CreateObject("basp21")
out = bobj.Replace("s/(.*) \- (.*) (\d+:\d\d)/artist: \1\ntitle: \2\ntime: \3\n/k", str1)
out = out & "date: " & str2
Set bobj = Nothing

MsgBox out

なんか .* の使い方がいいかげんな気はするけど、いちおう動くな。
で、慣れてるBASP21使っちゃったけど、こういうのってRegExpオブジェクトではどう書くの?
Set re = New RegExp
re.Pattern="(.*) \- (.*) (\d+:\d\d)"
MsgBox re.Replace(str1, "\1 \2 \3")
とか試してみてもうまくいかないし。
ExecuteしてMatches参照するのもなんか違うような。


159 名前:11 sage 投稿日:03/11/04 14:20 ID:4ZmepCbj
Set re = New RegExp
str1 = "Syrup16g - 明日を落としても 4:58"
str2 = "2003/11/04 0:19:52"
re.Pattern="(.*) \- (.*) (\d+:\d\d)"
out= re.Replace(str1, "artist: $1" & vbCrLf & "title: $2" & _
vbCrLf & "time: $3" &vbCrLf & "date: " & str2)
MsgBox out

208 名前:名無し~3.EXE sage 投稿日:03/11/22 09:30 ID:VQFdfBjl
>>206
var s_url = "http://ime.nu/jbbs.shitaraba.com/game/bbs/read.cgi?BBS=XXXX&KEY=YYYYYYYYYY";
var s_query = s_url.substr( s_url.search(/\?/) +1 );

var a = s_query.split("&");
var re = /(.+)=(.+)/;

for(var i=0, n=a.length ; i<n ; i++){
if( ! re.test(a[i]) ) continue;
WScript.Echo(RegExp.$1 +"\n" + RegExp.$2);

}


273 名前:名無し~3.EXE sage 投稿日:03/12/10 12:26 ID:fgTy1rnP
>>272
//ASCIIコード0x21(!)から0x7E(~)以外が含まれてたらtrue
//初めにパターンを作っておく。初めから展開しておいて直接関数内に置いたほうがスマートだけど
var p = "[^";
for (var i = 0x21; i < 0x7f; i++) p += "\\x" + i.toString(16);
p += "]";
//関数本体
function CheckExceptASCII(checking) {
   return  (checking.match(p) != null);
}

//VBSバージョン。やってることは同じ。
Dim pattern, i
pattern = "[^"
For i = 33 To 126
   pattern = pattern & "\x" & Hex(i)
Next
pattern = pattern & "]"

//vbsだとオブジェクト作らないと正規表現使えないのか……。
Function CheckExceptASCII(checking)
   Dim regex
   Set regex = New RegExp
   regex.Pattern = pattern
   CheckExceptASCII = regex.Test(checking)
End Function

609 名前:名無し~3.EXE sage 投稿日:04/05/12 20:46 ID:WQMUTPeO
グループ化しちゃ駄目なの?

Dim reg, matches, i, text
'textにファイルから文字列読込
Set reg = new RegExp
reg.Pattern = "<tr>((?:.*\n)+?.*)</tr>"
reg.IgnoreCase = True
reg.Global = True
Set matches = reg.Execute(text)
For Each i In matches
   WScript.Echo(i.SubMatches(0))
Next

750 名前:名無し~3.EXE sage 投稿日:04/08/09 05:24 ID:EALI9mHL
>749
strFilePath = "c:\xxxx1.txt" 'リネームするファイルのフルパス

set objFileSystem = CreateObject("Scripting.FileSystemObject")
set objFile = objFileSystem.GetFile(strFilePath)
strBuf = objFile.Name
strBuf = Replace(strBuf, "(", "")
strBuf = Replace(strBuf, ")", "")
strBuf = Replace(strBuf, "[", "")
strBuf = Replace(strBuf, "]", "")
objFile.Name = strBuf
set objFile = nothing
set objFileSystem = nothing

こんな感じか?()の中全部を削除したいならRegExpを使うと思うけど。

752 名前:名無し~3.EXE sage 投稿日:04/08/09 06:55 ID:EALI9mHL
>751
なんか、何に使うのか疑問だなぁ・・・。
まぁ、予想はしてたんだけど。

>750のReplace使ってる行を↓に置き換え。

Set objRegExp = New RegExp
objRegExp.Global = true
objRegExp.Pattern = "(\(.*\))|(\[.*\])"
strBuf = objRegExp.Replace(strBuf, "")
Set objRegExp = nothing



D:\新しいフォルダ\jane\DoeView051128\Logs\2ch\外部板\wsh\1022248379.dat

お前ら、wsh使ってますか? Part2

191 名前: 名無し~3.EXE 投稿日:02/07/25 02:16
以下のスクリプトがうまく動かないのですが、原因わかる方教えて下さい。
ウチの環境では「8」、「9」が返されるべきところで「0」が返って来るんだが...。
Win98SE/WSH5.6

var re = /hoge(\d+)\.txt/i;
var i;

for (i = 1; i < 10; i++)
{
   WScript.Echo(getNum('hoge0' + i + '.txt'));
}

function getNum(Path)
{
   if (Path.match(re) != null)
      return parseInt(RegExp.$1);
   return null;
}


196 名前:sage 191 投稿日:02/07/26 00:26
>>194
>>195
おお、スマンスマン。俺の解決法は、

parseInt(RegExp.$1)
     ↓
parseInt(RegExp.$1, 10)


516 名前:sage 名無し~3.EXE 投稿日:02/12/18 09:13 ID:61HXNRXe
>>512
dim fso, file, ts, regEx, ret, T, S
set fso = CreatObject("Scripting.FileSystemObject")
set file = fso.GetFile("C:\2ch.txt")
set ts = file.OpenAsTextStream(1)
set regEx = New RegExp
regEx.IgnoreCase = false
regEx.Pattern = "2ch"
T = ""
S = ""
do while ts.AtEndOfStream <> true
S = ts.ReadLine
ret = regEx.Test(S)
if ret then
T = T & S & vbCRLF
end if
loop
ts.close

set file = fso.GetFile("C:\2ch_new.txt")
set ts = file.OpenAsTextStream(2)
ts.Write(T)
ts.close



D:\新しいフォルダ\jane\DoeView051128\Logs\2ch\外部板\wsh\1100489339.dat

お前ら、wsh使ってますか? Part4

185 名前:sage 名無し~3.EXE 投稿日:04/12/17 23:39:22 ID:E3RuCigl
>>176
Option Explicit
Dim objArgs , objFS , objFile
Set objArgs = WScript.Arguments
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile(objArgs(0))
'検索置換関数
Function RegReplace(targetstring, pattern, replacestring)
Dim regEx
dim retVal
Set regEx = New RegExp
regEx.Pattern = pattern
regEx.IgnoreCase = True
regEx.Global = true
retVal = regEx.Test(targetstring)
If retVal then
RegReplace = regEx.Replace(targetstring , replacestring)
End If
End Function
'↓この行を増やせば何種類でも対応↓
objFile.Name = RegReplace(objFile.Name , "\.hoge$" , ".hage")
objFile.Name = RegReplace(objFile.Name , "\.hage$" , ".hige")

188 名前:sage 185 投稿日:04/12/17 23:52:07 ID:E3RuCigl
Option Explicit
Dim objArgs , objFS , objFile
Set objArgs = WScript.Arguments
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile(objArgs(0))
'検索置換関数、検索結果のブール値を返す。
Function RegReplace(targetstring, pattern, replacestring)
Dim regEx
dim retVal
Set regEx = New RegExp
regEx.Pattern = pattern
regEx.IgnoreCase = True
regEx.Global = true
retVal = regEx.Test(targetstring)
If retVal then
RegReplace = regEx.Replace(targetstring , replacestring)
Else
RegReplace = targetstring
End If
End Function
'↓この行を増やせば何種類でも対応↓
If objFile.Name <> RegReplace(objFile.Name , "\.hoge$" , ".hage") Then
objFile.Name = RegReplace(objFile.Name , "\.hoge$" , ".hage")
Wscript.Quit
ElseIf objFile.Name <> RegReplace(objFile.Name , "\.hage$" , ".hige") Then
objFile.Name = RegReplace(objFile.Name , "\.hage$" , ".hige")
Wscript.Quit
End If
'多分完成。

334 名前:sage 名無し~3.EXE 投稿日:05/02/15 02:24:19 ID:SQw/j9KV
だとしたら、私は↓を使ってます。
Dim oAutoIt, String
Set oAutoIt = WScript.CreateObject("AutoItX.Control")
String = oAutoIt.ClipGet
        Function Repl(strTarget, strPattern, strRep)
                Dim regEx
                Set regEx = New RegExp
                        regEx.Pattern = strPattern
                        regEx.IgnoreCase = True
                        regEx.Global = True
                strTarget = regEx.Replace(strTarget, strRep)
                Repl = strTarget
        End Function
String = Repl(String, "\t","&nbsp;&nbsp;&nbsp;&nbsp;")
oAutoIt.ClipPut String

524 名前:sage 名無し~3.EXE 投稿日:Windows暦21/04/01(金) 23:24:02 ID:5+EvFLRC
filespecはfso.MoveFileの第一引数でも使ってるだろう?
MoveFileの引数の解説を見てみたら?

……VBSじゃそもそもlengthプロパティがないんだよな。Len関数か。
いやそもそもfso.GetBaseNameを使えば必要ないな。
後はRight関数?
reはVBSだとRegExpオブジェクトを使う事になるな。


Function LastIsZenkaku(text)
  LastIsZenkaku = IsZenkaku(text, Len(text))
End Function
Function IsZenkaku(char, index)
  Dim regex
  Set regex = New RegExp
  regex.Pattern = "[\u3000-\u9FFF\uF900-\uFDFF\uFF10-\uFF19]"
  IsZenkaku = regex.Test(Mid(text, index))
End Function

//ん〜、IndexOf的な実装にすべきだったかも知れない。

533 名前:sage 名無し~3.EXE 投稿日:2005/04/04(月) 22:36:03 ID:sQd8caAk
クリップボードから取得してPINGを打とうと書いてみたのですが
取得する行で不明なエラーが出てきてしまいます・・・。

Dim WshShell, oExec, regEx
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objIE = CreateObject("InternetExplorer.Application")
Set regEx = New RegExp

Function Ping(vIPAddress)
For i = 0 To 10
Set oExec = WshShell.Exec("ping -n 1 " & vIPAddress)
Do While oExec.Status <> 1: WScript.Sleep 100: Loop
res = oExec.StdOut.ReadAll
regEx.Pattern = "Reply .* time.*"
regEx.IgnoreCase = True
Set Matches = regEx.Execute(res)
tmpMsg = tmpMsg & Matches(0).Value

Next
WScript.Echo tmpMsg
End Function
clip = objIE.Document.ParentWindow.ClipboardData.GetData("Text")
Ping(clip)

何か分かる教えて貰えませんか?

620 名前:sage 名無し~3.EXE 投稿日:2005/04/22(金) 18:29:22 ID:CcMx5Djc
//半角 ==> 全角 変換
var O_Dic = {} , Re_Hankana = new RegExp();
sub_initialize(O_Dic, Re_Hankana);

var s = sub_hanToZen("アイスでゴザイマス");
WScript.Echo(s.split("").join("\n"));

s = sub_hanToZen("パソコン検定"); //パは未定義なのでハだけ変換
WScript.Echo(s.split("").join("\n"));

function sub_hanToZen(s){
return s.replace( Re_Hankana , sub_replaceFunc );
}
function sub_initialize(dic, reHan){
var s_zen1 = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン";
var s_han1 = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン";

var s_zen2 = "ガギグゲゴザジズゼゾ";
var s_han2 = "ガギグゲゴザジズゼゾ";

var a_zen2 = s_zen2.split("");
var a_han2 = s_han2.match(/../g);

var a_zen = s_zen1.split("").concat( a_zen2 );
var a_han = s_han1.split("").concat( a_han2 );

for(var i=0, n=a_han.length ; i<n ; i++){ dic[ a_han[i] ] = a_zen[i]; }

var s_pattern = a_han2.join("|") + "|["+ s_han1 +"]";
reHan.compile( s_pattern , "g" );
}

711 名前:sage 名無し~3.EXE 投稿日:2005/06/03(金) 03:25:22 ID:bHoxzue7
>708
vbsは正規表現使い辛。

Dim wshShell, oExec, res
Set wshShell = CreateObject( "WScript.Shell" )
Set oExec = wshShell.Exec("net view")

Do While Not oExec.StdOut.AtEndOfStream
res = res & oExec.StdOut.ReadLine()
Loop

Dim regEx, Match, Matches
Set regEx = New RegExp
regEx.Pattern = "\\\\\S+"
regEx.Global = True
Set Matches = regEx.Execute(res)

For Each Match in Matches
WScript.Echo Match.Value
Next


D:\新しいフォルダ\jane\DoeView051128\Logs\2ch\外部板\wsh\1009175619.dat

お前ら、wsh使ってますか?

82 名前:11 投稿日:01/12/28 01:57
Const URL="http://kage.monazilla.org/wsock32.dll"
Const DLLName="wsock32.dll"
Const adTypeBinary = 1
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2

Set HTTP = WScript.CreateObject("Microsoft.XMLHTTP")
Set Stream = WScript.CreateObject("Adodb.Stream")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")

Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True

172 名前:117(WSH見習い) sage 投稿日:02/01/03 03:29
> 「和塩」とかも展開しようかなあと一時は思いましたが…
それ(・∀・)イイ!。そんじゃこれも展開。

var urlList = new Array();
expandUrl(urlList, "www.hogehoge.com/[01-03]/[03-05].jpg");
WScript.echo(urlList);

function expandUrl(urlList, url)
{
var re = new RegExp("[[]([0-9]+)-([0-9]+)[]]");
var arr = re.exec(url);

if (arr == null)
{
urlList.push(url);
return;
}

var beginStr = RegExp.$1; //エイリアス
var begin = parseInt(RegExp.$1);
var end = parseInt(RegExp.$2);
var leftContext = new String(RegExp.leftContext);
var rightContext = new String(RegExp.rightContext);

179 名前:117(WSH見習い) sage 投稿日:02/01/03 05:30
> これって、たとえば[1-1000]とかを展開すると、凄いことになったりしない?
それじゃそうならない仕組みを。
downloadFile()を>>129と入れ替えれば実際にダウンロードが始まります。

var dlr = new Downloader();
expandUrl(dlr, "www.hogehoge.com/[01-03]/[03-05].jpg");

function makeSaveFilePath(url)
{
// ここは好きなように書き換える。
var re = new RegExp("([0-9]+)/([0-9]+).jpg$");
var arr = re.exec(url);

return "C:\\downloads\\" + RegExp.$1 + "_" + RegExp.$2 + ".jpg";
}

function Downloader()
{
this.push = _Downloader_Push;
}

function _Downloader_Push(url)
{
downloadFile(makeSaveFilePath(url), url);
}

function downloadFile(savePath, url)
{
WScript.echo(url + "を" + savefile + "にセーブします");
}

229 名前:11 sage 投稿日:02/01/17 22:56
'priority.vbs

Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = False

For Each sArg In WScript.Arguments
If Fs.FileExists(sArg) And LCase(Fs.GetExtensionName(sArg))="lnk" Then
Set oShortCut=WshShell.CreateShortcut(sArg)
With oShortCut
sTargetPath=.TargetPath
If LCase(Fs.GetFileName(sTargetPath)) = "cmd.exe" Then
regEx.Pattern="\/([RHANBL]\S*)"
Set Matches =regEx.Execute (.Arguments)
For Each Match In Matches
sPriorityAccessKey = Left(Match.SubMatches(0),1)
Next
regEx.Pattern="cmd.*\s\/[RHANBL]\S*\s+(.*)"
Set Matches =regEx.Execute (.Arguments)
For Each Match In Matches
sProgArg =Match.SubMatches(0)
Next
Else
sPriorityAccessKey = "N"
sProgArg = RTrim(sTargetPath & " " & .Arguments)
End If

sPriorityAccessKey = InputBox("優先度を指定してください。" & vbCrLf & "[R]リアルタイム [H]高 [A]通常以上 [N]通常 [B]通常以下 [L]低", Fs.GetBaseName(sArg) & "(" & sProgArg & ")", sPriorityAccessKey)
If sPriorityAccessKey="" Then sPriorityAccessKey="0"
sPriorityAccessKey=Left(UCase(sPriorityAccessKey),1)

247 名前:117(WSH見習い) sage 投稿日:02/01/21 22:08
var objFs = new ActiveXObject("Scripting.FileSystemObject");
objFs.CreateTextFile(queueFilePath);
var file = objFs.GetFile(queueFilePath);
var fout = file.OpenAsTextStream(ForWriting, TristateUseDefault);

var urlList = new Array();
expandUrl(urlList, url);

while (urlList.length > 0)
fout.Write(makeIrvineQueue(urlList.pop()));

fout.Close();
}

function makeIrvineQueue(url)
{
var re = new RegExp("([^/]+)/([^/]+)$");
var arr = re.exec(url);

var saveFileName = RegExp.$1 + "_" + RegExp.$2;

return url + "\t\t" + saveFileName
+ "\t\t\t\t0\t0\t\t\t\t0\t\t0\t0\t0\t\t0\t\t\n";
}

248 名前:117(WSH見習い) sage 投稿日:02/01/21 22:08

function expandUrl(urlList, url)
{
var re = new RegExp("[[]([0-9]+)-([0-9]+)[]]");
var arr = re.exec(url);

if (arr == null)
{
urlList.push(url);
return;
}

var beginStr = RegExp.$1; //エイリアス
var begin = parseInt(RegExp.$1);
var end = parseInt(RegExp.$2);
var leftContext = new String(RegExp.leftContext);
var rightContext = new String(RegExp.rightContext);

var fillMode = false;
var fillSize = 0;

if (beginStr.charAt(0) == "0")
{
fillMode = true;
fillSize = beginStr.length;
}

for (var i = begin; i <= end; i++)
{
var si = i.toString();
if (fillMode) while (si.length < fillSize) si = "0" + si;

var expUrl = leftContext + si + rightContext;
expandUrl(urlList, expUrl);
}
}

410 名前:11 sage 投稿日:02/02/06 18:53
Dim iRes
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set dicIdx = WScript.CreateObject("Scripting.Dictionary")
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True

If Not Fs.FileExists("kage.exe") Then
MsgBox "かちゅ〜しゃのあるフォルダにおいてください。それとkage導入して。"
WScript.Quit
End If

If Not Fs.FileExists("kakikomi.txt") THen
MsgBox "ROMはお断りだゴルァ"
WScript.Quit
End If

If Not Fs.FolderExists("log") THen
MsgBox "ログがない。"
WScript.Quit
End If

Set tsKakikomi=Fs.OpenTextFile("kakikomi.txt")
sKakikomi=tsKakikomi.ReadAll
tsKakikomi.Close

If Not Fs.FolderExists("log\local") Then
Fs.CreateFolder "log\local"
End If

If Not Fs.FolderExists("log\local\mine") Then
Fs.CreateFolder "log\local\mine"
End If

504 名前:11 投稿日:02/02/22 02:01
>>503
ファイルかフォルダをD&D。

Dim RegEx,RegEx2,Fs
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set RegEx=New RegExp
Set RegEx2=New RegExp
RegEx.IgnoreCase=True
RegEx.Global=True

For Each sArg In WScript.Arguments
If Fs.FolderExists(sArg) Then
For Each oFile In Fs.GetFolder(sArg).Files
Call RenameHTMLFile(oFile)
Next
ElseIf Fs.FileExists(sArg) Then
Call RenameHTMLFile(Fs.GetFile(sArg))
End If
Next

MsgBox "終了"

522 名前:うっしゅ君14世 sage 投稿日:02/02/25 01:14
Dim WshShell, oExec, regEx
Set WshShell = CreateObject("WScript.Shell")
Set regEx = New RegExp

For i = 150 To 190
Set oExec = WshShell.Exec("ping -n 1 61.116.87." & i)
Do While oExec.Status <> 1: WScript.Sleep 100: Loop
res = oExec.StdOut.ReadAll
regEx.Pattern = "Reply .* time.*"
regEx.IgnoreCase = True
Set Matches = regEx.Execute(res)

If Matches.Count > 0 Then
WScript.Echo Matches(0).Value
End If
Next

------------------------------------------------------

とあるスレで上記のスクリプトがあったのですが
ダブルクリックしてもうまく動きませんでした。
元のスレを忘れてしまったのでここで訊かせてください。

842 名前:名無し~3.EXE 投稿日:02/05/03 17:04
>>838

WSH使うなら、FileSystemObjectのReadlineを使って一行ずつ読む。
読んだ内容を適当な変数に突っ込みつつ,それをRegExp(正規表現)
オブジェクトあたりを使うなりして、判定、置換。そんな感じでお手軽
にできそうだが?

845 名前:俺が組んでやるぜ! 投稿日:02/05/03 19:21
>>838
//.html をこのスクリプトに Drop
//置換して上書きします。"逆の操作" にすると元に戻します
//(注) 元に戻らない場合もあります

var w=WSH;
if(0==w.Arguments.length) w.echo('引数がありません'),w.quit();
var objFs=new ActiveXObject('Scripting.FileSystemObject');
var str_arg=w.Arguments.Item(0);
if(!objFs.FileExists(str_arg) || 'html'!=objFs.GetExtensionName(str_arg).toLowerCase())
w.echo('引数は無効です'),w.quit();

var obj_text=objFs.OpenTextFile(str_arg,1); //読込み open
var str_text=obj_text.ReadAll();
obj_text.Close();

str_text=str_text.replace(/[^\n](<dt>)/ig,'\r\n$1'); //<dt>の前にCRLFを付加する
//str_text=str_text.replace(/\r\n(<dt>)/ig,'$1'); //逆の操作
obj_text=objFs.OpenTextFile(str_arg,2); //書込み open
obj_text.Write(str_text);
obj_text.Close();

if(RegExp.index<0) w.echo('一致パターンなし');
else w.echo('置換完了');

869 名前:845 修正 投稿日:02/05/07 23:34
すみません、>>845 のスクリプトは、正規表現パターンが間違ってました。
/l50</a><br><b><dt>3 :<font color=green>

/l50</a><br><br
<dt>3 :<font color=green>
となってしまいます。
変更点
正規表現パターン
一致パターンがない時は 上書きしないようにした
バグの温床になりそうなものがいくつか有ったのでロジックを変更
ショートカットの場合は、リンク先を参照するようにした

MSのヘルプに、
http://www.microsoft.com/japan/developer/library/script56/js56jsmthtest.htm
>グローバルな RegExp オブジェクトのプロパティは、test メソッドの実行では変更されません
と、ありますが、そうすると ローカルファイルの .url の時は、上の sub_getTarget() 内の
rightContextプロパティ を使って Pathを取り出せないはずですが、うち(98SE ,WSH5.6 ,IE5.0)
ではこれでうまくいきます。
もし これがうまくない時は、下の substr() を使ったものにしてください

870 名前:845 修正 スクリプト 投稿日:02/05/07 23:35
var w=WScript;
if(0==w.Arguments.length) w.echo('引数がありません'),w.quit();
var objFs=new ActiveXObject('Scripting.FileSystemObject');
var objWs=new ActiveXObject('WScript.Shell');

var str_arg=sub_getTarget(w.Arguments.Item(0));
if(!objFs.FileExists(str_arg) || !/\.html$/i.test(str_arg))
w.echo('引数は無効です'),w.quit();

var obj_text=objFs.OpenTextFile(str_arg,1); //読込み open
var str_text=obj_text.ReadAll();
obj_text.Close();

var re=/([^\n])(<dt>)/ig,str_replace='$1\r\n$2';
//var re=/(<dt>)/ig,str_replace='\r\n$1'; //何回でも置換するパターン
//var re=/\r\n(<dt>)/ig,str_replace='$1'; //逆の操作
if(!re.test(str_text)) w.echo('一致パターンなし'),w.quit();
str_text=str_text.replace(re,str_replace); //<dt>の前にCRLFを付加する

obj_text=objFs.OpenTextFile(str_arg,2); //書込み open
obj_text.Write(str_text);
obj_text.Close();
w.echo('置換完了');

//ショートカット(.lnk .url)なら リンク先を返す
function sub_getTarget(str_path){
try{
var str_tar=objWs.CreateShortcut(str_path).TargetPath;
if(/^file:\/{3}/i.test(str_tar)) return RegExp.rightContext.replace(/\//g,'\\');
// if(/^file:\/{3}/i.test(str_tar)) return str_tar.substr(8).replace(/\//g,'\\');
return str_tar;
}catch(e){return str_path}
}


逆噴射J ◆lW31l/VtQc mirrorhenkan

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル