VBScript OpenTextFile Файл не найден, когда Windows Explorer показывает файл

Вы не можете делать какие-либо предположения о порядке возвращаемых значений Type.GetProperties, см. документацию :

Метод GetProperties не возвращает свойства в конкретный порядок, например, алфавитный или порядок декларации. Ваш код не должен зависеть от порядка, в котором возвращаются свойства, потому что этот порядок меняется.

blockquote>

Если вам нужен конкретный заказ, вы должны сделать свой код заказам возвращенной коллекции.

2
задан Ansgar Wiechers 15 January 2019 в 23:26
поделиться

1 ответ

Наиболее вероятная причина наблюдаемого вами поведения заключается в том, что команды openssl, которые вы запускаете непосредственно перед попыткой открыть этот файл (в частности, команда шифрования, которая, похоже, создает файл), еще не завершены. Вы не говорите методу Run ждать возвращения команд, поэтому они работают асинхронно в фоновом режиме. Предположительно, WScript.Echo добавляет достаточную задержку для завершения шифрования, прежде чем код переходит к открытию файла. Использование WScript.Sleep вместо того, чтобы что-то повторять, вероятно, имело бы такой же эффект.

Чтобы устранить проблему, дождитесь возвращения внешних команд.

Замените эти строки:

encryptOpts = encryptorPath & ...
oShell.Run (encryptOpts)
decryptOpts = encryptorPath & ...
oShell.Run (decryptOpts)

на это:

encryptOpts = encryptorPath & ...
oShell.Run encryptOpts, 0, True
decryptOpts = encryptorPath & ...
oShell.Run decryptOpts, 0, True

Также рекомендуется проверить состояние выхода внешних команд, чтобы вы могли увидеть, если что-то пошло не так:

rc = oShell.Run(encryptOpts, 0, True)
If rc <> 0 Then
    'an error occurred
End If
0
ответ дан Ansgar Wiechers 15 January 2019 в 23:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: