Используйте регулярное выражение вместо строки.
app.get(/^\/(.+)/, function(req, res) {
var href = req.params[0]; // regexp's numbered capture group
});
Обратите внимание, что вы не можете использовать синтаксис строки (app.get('/:href(.+)')
), поскольку Express допускает только небольшое подмножество регулярных выражений в строках маршрута и использует эти регулярные выражения в качестве условной проверки для этот конкретный компонент маршрута. Он не захватывает сопоставляемое содержимое в условных выражениях и не позволяет сопоставлять компоненты (части URL, разделенные косой чертой).
Например:
app.get('/:compa([0-9])/:compb([a-z]/')
Этот маршрут совпадает только в том случае, если первый компонент ( compa ) представляет собой одну цифру, а второй компонент ( compb ) это одна буква az.
'/:href(.+)'
говорит: «сопоставлять первый компонент, только если контент является чем-то», что не имеет особого смысла; это поведение по умолчанию в любом случае. Кроме того, если вы изучите источник , вы увидите, что Express фактически заставляет точку в этом условном выражении быть буквальной.
Например, app.get('/:href(.+)')
фактически компилируется в:
/^\/(?:(\.+))\/?$/i
Обратите внимание, что ваш .
сбежал, поэтому этот маршрут будет соответствовать только одному или нескольким периодам.
Отвечает ли
java -jar foo.jar %*
вашим потребностям? Он должен добавить все параметры из пакетного выполнения к вызову вашего приложения в пакетном файле.