Мне нужен сценарий DOS .bat, который просто передает ВСЕ аргументы в программу .exe.

Например, сценарий DOS main.bat, который вызывает .exe program.exe:

program.exe ????

Вопрос в том, что ??? должно быть. Аргументы должны ВСЕМ передаваться в кавычках: если есть имена файлов с пробелами, они должны быть оставлены без изменений. В UNIX/POSIX это называется "массив в кавычках", потому что аргументы образуют массив (ARGV [x]), и каждый аргумент должен быть заключен в кавычки.

1 ответ1

0

Вы можете просто использовать% *, чтобы передать все, что было передано в файл .bat чему-либо еще.

Обратите внимание, что если вы передадите "слова с пробелами" в пакетный файл, он будет рассматриваться как 1 параметр в кавычках и передается как таковой. Если вы опустите "", пакет все равно отправит его программе, но программа увидит его как отдельные параметры. Это действительно зависит от того, как вызывается командный файл, чтобы узнать, будут ли эти кавычки там или нет, и если это необходимо. Например, если вы перетащите файл в проводнике на пакетный файл, он добавит для вас кавычки. Если вы набираете вручную из командной строки, это до пользователя, чтобы проверить кавычки.

Так:

program.exe %0

должно быть достаточно в вашем случае.

Кроме того, из командной строки, если вы автоматически заполняете имена файлов с помощью вкладки, кавычки автоматически добавляются, если они необходимы, и даже если в кавычках может показаться, что вам нужно отредактировать их, чтобы продолжить ввод, у вас действительно нет к. Командная строка достаточно умна.

Пример: здесь я набираю prog, дважды нажимаю tab, затем продолжаю печатать и еще раз нажимаю tab.

C:\>_

C:\>cd prog_  (tab)

C:\>cd "Program Files"_  (tab)

C:\>cd "Program Files (x86)"_

C:\>cd "Program Files (x86)"\Micro_    (tab)

C:\>cd "Program Files (x86)\Microsoft Office"_    (enter)

C:\Program Files (x86)\Microsoft Office>_

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .