-2

レジストリ エントリは次のようになります。

A1="OS Ver";A2="Patch Ver";A3="Location Number"...

私のスクリプトは、インスタンス「A3」値のロケーション番号を取得し、それを作成しようとしている VB プログラムに渡します。VB プログラムは入力を読み取り、A3 が存在するかどうかを判断し、値を変更します。

VB コードのスニペットを次に示します。

Module Main Public Sub Set_A3(declare String) Open Registry GetValue A3 が存在する場合、A3="ロケーション番号" を入力 Registry.Close End Sub に変更します。

Sub Main() 行を文字列として宣言 Readline 行に入力呼び出し関数が含まれている場合 End Sub

私が立ち往生しているのは、プログラムが正常に動作するようなコマンドからです。ただし、スクリプト内に組み込むとすぐに、他のすべてのエントリの読み取りがハングします。

質問、場所番号を取得する前にプログラムがスクリプトから特殊文字に遭遇したときに readline 関数を呼び出して停止するにはどうすればよいですか?

全体にアプローチする他の方法はありますか??!!

問題の説明がうまくいったことを願っています。ご不明な点がございましたら、お尋ねください。本当に助けていただきありがとうございます。

Ken White のリクエストによるコード:

Imports System.Data.OleDb
Imports System.Net.NetworkInformation
Imports Microsoft.Win32

Module Main
Public Sub Set_A3(ByVal A3 As String)
        Try
            If A3 <> "" Then
                Dim sConfig As String
                Dim regKey As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\SS\Location\Variables", True)
                sConfig = regKey.GetValue("VariableGroups")
                Dim sConfigNew As String = ""
                Dim s() As String = sConfig.Split(";")
                For i As Integer = 0 To s.Count - 1
                    If s(i).Contains("A3") Then
                        s(i) = String.Format("A3={1}{0}{1}", AU, Chr(34))
                    End If
                    If s(i).Contains("A4") Then
                        s(i) = String.Format("A4={1}{0}{1}", "New Configuration", Chr(44))
                    End If
                Next
                Dim bFirst As Boolean = True
                For Each stmp As String In s
                    If bFirst Then
                        sConfigNew = stmp
                        bFirst = False
                    Else
                        sConfigNew = String.Format("{0};{1}", sConfigNew, stmp)
                    End If
                Next
                regKey.SetValue("VariableGroups", sConfigNew)
                regKey.Close()
            Else
                Console.WriteLine("No Location Number Input")
            End If
        Catch ex As Exception
            Console.WriteLine(String.Format("RegSet Error: {0}", ex.Message))
        End Try
    End Sub
    Sub Main()
        Try
            Dim line As String
            line = Console.ReadLine()
            If line IsNot Nothing And line.Contains("-a3") Then
                Set_A3(Environment.GetCommandLineArgs(2).ToString())
                line = Console.ReadLine()
                If line.Contains("True") Then
                Exit
                End If
            End If
        Catch ex As Exception
        End Try
    End Sub

End Module

したがって、上記のコード化されたプログラムが呼び出された後、readline は '-a3' に到達する前に他のすべての入力を通過するため、そこに留まります。一方、このパラメーター '-a3 12345' を使用して cmd を介して .exe ファイルを呼び出すと、レジストリに A3 フィールドが正常に入力されます。

お役に立てれば。助けてください。提案やご意見をお寄せいただきありがとうございます。

4

1 に答える 1