コマンドラインからプレーンテキストファイル内のテキストを置き換える
コマンドラインツールのWindowsライブラリに欠けている非常に便利な機能は、プレーンテキストファイルのテキストを置き換える機能です。このような機能は、多くのシステム管理者が行う以下のようなさまざまな実用的なタスクに使用できます。
- 設定/ INIファイルを更新してUNCパスを置き換える.
- ターミナル/ CitrixサーバーのINIファイルに格納されているユーザー情報を一括更新する.
- スクリプトと組み合わせて「テンプレート」データを展開してから、コピーしたファイルに値を適用する.
私たちの解決策は、Visual BasicのReplace関数と連携するVBScriptです。このスクリプトをWindowsのPATH変数内の場所に配置することで、この機能を自由に使用できるようになります。.
用途
システムに入ったら、ReplaceTextコマンドを使用してスクリプトを呼び出すことができます。いくつかの例で、これを使用する方法を説明します。
C:DataValues.csvファイルで、単語 "null"を "n / a"に置き換えます。
ReplaceText“ C:DataValues.csv” null該当なし
大文字と小文字を区別しない検索を使用して、C:Users(+サブディレクトリ)フォルダ内のすべてのINIファイルをスキャンし、出現するすべての "Server = Old"を "Server = New"に置き換えます。
/ P "C:ユーザー" / M * .ini / S / C "Cmd / C" ReplaceText @path Server = Old Server = "New / I"
大文字と小文字を区別して検索し、現在のユーザのプロファイルに含まれるすべてのCFGファイルをスキャンし、「p @ ssw0rd」を「PA $$ woRd」に置き換えます。
/ P“%UserProfile%” / M * .cfg / S / C“ Cmd / C置換テキスト@path p @ ssw0rd PA $$ woRd”
あなたが以下で見ることができるように、スクリプトは非常に単純で、あなたがするかもしれないどんな特別な状況にも適応するために簡単に修正されることができます。あるいは、特定の値をハードコードしたスクリプトのコピーを作成して、ダブルクリックでコマンドを実行したり、他の人に簡単に配布したりできるようにすることもできます。.
スクリプト
'テキストを置換
'によって書かれた:Jason Faulkner
'SysadminGeek.com
'このスクリプトは、システムのPATH変数で指定されたフォルダに配置する必要があります.
'使用法(WScript):
'ReplaceText FileName OldText NewText [/ I]
'/ I(オプション) - テキストの照合では大文字と小文字が区別されません
oArgs = WScript.Argumentsを設定します。
intCaseSensitive = 0
i = 3からoArgs.Count-1まで
UCase(oArgs(i))= "/ I"の場合intCaseSensitive = 1
次
oFSO = CreateObject( "Scripting.FileSystemObject")を設定します。
oFSO.FileExists(oArgs(0))ではない場合
WScript.Echo "指定されたファイルは存在しません。"
そうでなければ
oFile = oFSO.OpenTextFile(oArgs(0)、1)に設定します。
strText = oFile.ReadAll
oFile.Close
strText = Replace(strText、oArgs(1)、oArgs(2)、1、-1、intCaseSensitive)
oFile = oFSO.OpenTextFile(oArgs(0)、2)に設定します。
oFile.WriteLine strText
oFile.Close
終了する場合
その他の注意事項
デフォルトでは、WindowsはWScriptを使用してVBScript(VBS)ファイルを実行します。これが引き起こす可能性のある唯一の問題は、スクリプトからのエラーやメッセージがポップアップボックスとして表示されることです。コマンドラインツールの場合は、これらのメッセージをコンソールに表示するのが最善です。これを実現する方法はいくつかあります。.
コマンドプロンプトから次のコマンドを実行して、VBScriptファイルのデフォルトのハンドラをCScriptに変更します(管理者権限で)。
CScript // H:CScript
CScriptコマンドを使用してReplaceTextスクリプトを明示的に実行します。
CScript“ C:PathToReplaceText.vbs” // Bファイル名OldText NewText [/ I]
特別な場合として、バッチスクリプトからReplaceTextを実行すると、通常はデフォルトのハンドラに関係なく、使用されるエンジンとしてCScriptが使用されます。この機能に頼る前に確かにこれをテストしたいと思うでしょう.
SysadminGeek.comからReplaceTextスクリプトをダウンロードしてください