ラベル VBS の投稿を表示しています。 すべての投稿を表示
ラベル VBS の投稿を表示しています。 すべての投稿を表示

2017年11月7日火曜日

複数ファイル内の文字列をまとめて置換2

前回は、固定文字に変換していましたが、
文字列ごとに指定文字にするように変更しました。

Option Explicit
Dim objFileSys 'FileSystemオブジェクト
Dim strReadFile '置換ファイル
Dim strWriteFile
Dim objRead 'ファイルオブジェクト
Dim objWrite 'ファイルオブジェクト
Dim strRep,strRepBase
Dim strLine '読み込んだテキスト
Dim index 'ファイルループ
Set objFileSys = CreateObject("Scripting.FileSystemObject")
strReadFile = Wscript.Arguments(0)
Wscript.Echo strReadFile

strWriteFile= objFileSys.BuildPath (objFileSys.GetParentFolderName (WScript.ScriptFullName), objFileSys.GetTempName ())
Set objRead =objFileSys.OpenTextFile(strReadFile,1,false)
Set objWrite=objFileSys.OpenTextFile(strWriteFile,2,true)
Do Until objRead.AtEndOfStream = true
    strLine=objRead.ReadLine()
For index=1 To Wscript.Arguments.Count-1 Step 2
strRep = Wscript.Arguments(index+1)
strLine = Replace(strLine, Wscript.Arguments(index), strRep)
Next
    objWrite.WriteLine strLine
Loop
 
objRead.Close
objWrite.Close
objFileSys.DeleteFile strReadFile
objFileSys.MoveFile strWriteFile,strReadFile
Set objFileSys = Nothing
Set objRead = Nothing
Set objWrite = Nothing

2017年11月6日月曜日

複数ファイル内の文字列をまとめて置換

複数のファイル内の文字列をまとめて置換するVBScriptを作ったので、覚書。
一部、非公開の文字列を隠したいがために、作成してみました。

ファイルは、batファイルと、vbsファイルの2つ。

フォルダー階層を回すときに、batのほうが便利だったので。。。

まずは、ファイル内の文字列を置換するScript(replace.vbs)
第一引数がファイルパス、それ以降が置換する文字列...

Option Explicit
Dim objFileSys 'FileSystemオブジェクト
Dim strReadFile '置換ファイル
Dim strWriteFile
Dim objRead 'ファイルオブジェクト
Dim objWrite 'ファイルオブジェクト
Dim strRep,strRepBase
Dim strLine '読み込んだテキスト
Dim index 'ファイルループ
Set objFileSys = CreateObject("Scripting.FileSystemObject")
strReadFile = Wscript.Arguments(0)
Wscript.Echo strReadFile
strRepBase = "Reserved"

strWriteFile= objFileSys.BuildPath (objFileSys.GetParentFolderName (WScript.ScriptFullName), objFileSys.GetTempName ())
Set objRead =objFileSys.OpenTextFile(strReadFile,1,false)
Set objWrite=objFileSys.OpenTextFile(strWriteFile,2,true)
Do Until objRead.AtEndOfStream = true
    strLine=objRead.ReadLine()
For index=1 To Wscript.Arguments.Count-1
strRep = strRepBase & CStr(index)
strLine = Replace(strLine, Wscript.Arguments(index), strRep)
Next
    objWrite.WriteLine strLine
Loop

objRead.Close
objWrite.Close
objFileSys.DeleteFile strReadFile
objFileSys.MoveFile strWriteFile,strReadFile
Set objFileSys = Nothing
Set objRead = Nothing
Set objWrite = Nothing

次は、バッチファイル
for文で、.txtのファイルを古パスでvbsに渡します。
置換する文字列は、「秘密の言葉」、「内緒の言葉」、「見ちゃいや」です。

for /R  %%A in (*.txt) do cscript replace.vbs "%%~fA" "秘密の言葉" "内緒の言葉" "見ちゃいや"
pause

2016年8月31日水曜日

WindowsでのScriptで配列を利用(Powershell,VBS)

前回、バッチファイルで配列もどきを書いてみました。
書けることは書けたのですが、ものすごく面倒だったので、
Windows標準で使用できるスクリプトで書き直してみました。


VBSでの配列

Option Explicit
Dim values
Dim index
values = Array("value0", "value1", "value2", "value3", "value4")
For index = LBound(values) To UBound(values)
    WScript.Echo values(index)
Next


PowerShellでの配列

$values = @("value0","value1","value2","value3","value4")
for ($i = 0; $i -lt $values.Length; $i++) {
    Write-Host($values[$i])
}

バッチでの配列

@echo off
set key[0]="value0"
set key[1]="value1"
set key[2]="value2"
set key[3]="value3"
set key[4]="value4"
for /L %%i in (0,1,4) do (
call echo %%key[%%i]%%
)


PowerShellは、あまり詳しく知りませんが、一番簡単に書けるかも。
ちなみに、googleのWebサーバーに、ファイルをアップロードしたところ、
batとvbsは、エラーになりましたが、ps1は大丈夫でした。