findstr () Ошибка времени выполнения 23 при вызове в качестве подпроцесса? - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь запустить команду findstr из моего проекта vb6, однако мне кажется, что я не могу определить правильный синтаксис.

Я вызывал командный файл для запуска findstr но попытка интегрировать его в проект не удалась.

'''''''' Lines below allow ONLY Numeric text in teh Test1 box
Dim textval As String
Dim numval As String

Private Sub Text1_Change()
  textval = Text1.Text
  If IsNumeric(textval) Then
    numval = textval
  Else
    Text1.Text = CStr(numval)
  End If
End Sub
'''''''' Lines above allow ONLY Numeric text in teh Test1 box


Private Sub Command1_Click()
''''Lines below enables program/project to execute in the current `enter code here`directory
Dim MyCurrentDir As String
'Show current directory
MyCurrentDir = CurDir
'  MsgBox "Current Directory is " & MyCurrentDir
''''Lines above enables program/project to execute in the current directory

' Remarked for testing below WORKS: Shell (MyCurrentDir & "\findstring.bat " & Text1)
' TEST BELOW

Dim command As String
'findstr "%1" *achineCont*.log | findstr  "Q_OUTFEED_EJECTBAG_SIG">FOUNDBAG.txt
command = "findstr "" & Text1 & "" *achineCont*.log | findstr  ""Q_OUTFEED_EJECTBAG_SIG"">FOUNDBAG.txt"
Shell "cmd.exe /c command"

'findstr "Done" *ai*.log | findstr  "writing" | findstr "%1">>FOUNDBAG.txt
Command2 = "Done"" *ai*.log | findstr  ""writing"" | findstr "" & Text1 & "">>FOUNDBAG.txt"
Shell "cmd.exe /c command2"

'start "" cmd /c cscript ReadTimeFromFileWriteToNewFile.vbs
Command3 = "start """" cmd /c cscript ReadNewFile.vbs"
Shell "cmd.exe /c command3"
' TEST ABOVE
End Sub



Private Sub Command2_Click()
Unload Form1        'tell the form to unload
Set Form1 = Nothing 'free the memory used by the variables
End Sub

Private Sub Form_Load()

''''Lines below enables program/project to execute in the current directory
Dim MyCurrentDir As String

'Show current directory
MyCurrentDir = CurDir
'  MsgBox "Current Directory is " & MyCurrentDir
''''Lines above enables program/project to execute in the current directory
End Sub

1 Ответ

1 голос
/ 04 апреля 2020

Вы находитесь в нескольких кавычках от неправильности в каждой команде. Вы должны утроить некоторые кавычки и переместить некоторые другие. Для первой команды попробуйте следующее:

Command = "findstr """ & Text1 & """ *achineCont*.log | findstr  ""Q_OUTFEED_EJECTBAG_SIG"">FOUNDBAG.txt"

Для второй команды попробуйте следующее:

Command2 = """Done"" *ai*.log | findstr  ""writing"" | findstr """ & Text1 & """>>FOUNDBAG.txt"

И, наконец, для четвертой команды попробуйте следующее:

Command4 = "findstr ""Done"" *ai*.log | findstr  ""writing"" | findstr """ & Text1 & """>>FOUNDBAG.txt"

Хороший способ выяснить это - отобразить строку с помощью Debug.Print или MsgBox и корректировать кавычки, пока строка не будет правильной. Также помните, что в строке есть открывающая и закрывающая кавычки. Любые другие кавычки в строке должны быть экранированы путем удвоения кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...