Это неправильное использование метода Shell :
Public Shared Function Shell (PathName As String, [...]) As Integer
Параметры
PathName
Тип: System.String
Необходимые. Строка. Имя программы для выполнения, вместе с необходимыми аргументами и параметрами командной строки. PathName также может включать диск и путь к каталогу или папку.
Предполагается, что первым параметром будет имя программы для выполнения. FOR
это не программа, это встроенная функция интерпретатора командной строки cmd.exe
.
Насколько я вижу, у вас есть следующие опции:
Опция 1 : явно вызвать cmd.exe
и передать строку, которую вы хотите выполнить, с параметром /c
:
Shell("cmd.exe /c for /R %I ...")
Запрещается дублировать кавычки ("
), чтобы избежать их.
Опция 2 : создайте пакетный файл и вызовите пакетный файл, используя Shell
.
Опция 3 : не используйте FOR
, чтобы найти нужные файлы, но используйте методы пространства имен System.IO, например, Directory.EnumerateFiles , вместо.