выполнить программу windows с параметрами из cygwin

Я хочу выполнить программу Windows в консоли cygwin. Я пробовал различные формы, но я не нашел правильного синтаксиса.

$ cmd /C "C:\Program Files\sqldeveloper\sqldeveloper\bin\sdcli.exe format input=sentencia.tmp output=sent_formateada.tmp" "C:\Program" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable. $ cmd /C "C:\Program Files\sqldeveloper\sqldeveloper\bin\sdcli.exe" format input=sentencia.tmp output=sent_formateada.tmp format input=<archivo o directorio de entrada> output=<archivo o directorio de salida> $ cmd /CC:\\"Program Files"\\sqldeveloper\\sqldeveloper\\bin\\sdcli.exe format input=o:\\Mezcla\\Scripts\\Oracle\\Informes_HTML\\TMP\\sentencia.tmp output=o:\\Mezcla\\S cripts\\Oracle\\Informes_HTML\\TMP\\sent_formateada.tmp Error en input=o:\Mezcla\Scripts\Oracle\Informes_HTML\TMP\sentencia.tmp output=o:\Mezcla\Scripts\Oracle\Informes_HTML\TMP\sent_formateada.tmp format input=<archivo o directorio de entrada> output=<archivo o directorio de salida> Comando terminado. 

2 Solutions collect form web for “выполнить программу windows с параметрами из cygwin”

Почему вы вызываете cmd? Это дополнительный уровень сложности, который вам не нужен. Вы можете вызвать программу Windows непосредственно из bash:

 'C:\Program Files\sqldeveloper\sqldeveloper\bin\sdcli.exe' format input=sentencia.tmp output=sent_formateada.tmp 

или

 /cygdrive/c/Program\ Files/sqldeveloper/sqldeveloper/bin/sdcli.exe format input=sentencia.tmp output=sent_formateada.tmp 

или любой другой способ цитирования в sh.

Если вы должны вызывать cmd, вам может понадобиться передать код CMD на стандартный ввод или в пакетном файле, а не на /c , потому что /c анализирует кавычки по-другому (что для меня не имеет смысла). Это было бы

 cmd <<<'"C:\Program Files\sqldeveloper\sqldeveloper\bin\sdcli.exe" format input=sentencia.tmp output=sent_formateada.tmp' 

Поскольку другой ответ указывает, что вы должны иметь возможность запускать команду непосредственно из приглашения Cygwin bash. Но если вы передаете аргументы file / dir, программы на родных окнах будут ожидать родной путь к окну. Вместо того, чтобы пытаться построить такой путь вручную, вы можете использовать инструмент cygpath :

 # Emits, for example, 'C:\Program Files\MyApp\MyApp.exe' cygpath --windows '/cygdrive/c/Program Files/MyApp/MyApp.exe' 

Еще одна потенциальная ошибка, о которой вам следует знать, может иметь разные значения между Windows и Cygwin для определенных общих переменных среды, таких как HOME или TEMP. Это не так часто встречается, но если вы подозреваете, что это может произойти, определите Windows (ы) перед командой. Это запустит программу со средой, содержащей переопределенное значение. Например, TEMP is /tmp в Cygwin, но в Windows это совсем другое, поэтому, если это вызывает проблемы, у вас может получиться что-то вроде:

 TEMP="$LOCALAPPDATA\\Temp" MyApp.exe foo bar ... 

Наконец, обязательно укажите любые аргументы, в которых есть пробелы.

В качестве побочного примечания у меня есть некоторые сценарии-оболочки, которые накладываются на определенные программы Windows, которые позволяют мне вводить аргументы типа Cygwin. Обертки, а затем используйте что-то вроде этой функции, чтобы преобразовать аргументы в готовый формат Windows, прежде чем передавать их в собственное приложение:

 # Process positional params, converting file path to Windows format # and adding quotes around other params if they contain spaces. Result # saved in array named WINFILEARGS. Call Windows app with single # arg "${WINFILEARGS[@]}" make_win_file_args() { declare -ga WINFILEARGS local SPACEREGEX="[[:alnum:]]+[[:space:]]+[[:alnum:]]+" local index=0 for posparam ; do currparam="$posparam" if [[ -e $currparam ]]; then # Convert unix paths from command line to windows paths currparam="\"$(cygpath -w "${posparam}")\"" elif [[ $currparam =~ $SPACEREGEX ]]; then # Quote non-file parameters that contain spaces currparam="\"${currparam}\"" fi WINFILEARGS[$index]="$currparam" (( index=$index+1 )) done } 
  • Можно ли создать zip-файл без использования zip-бинарного файла?
  • Как запустить другую установленную систему из Linux?
  • Можно ли использовать двухзарядный Linux Mint на любом ноутбуке Windows 8?
  • Ошибки двойной загрузки Win10 / Ubuntu16.04
  • Изменение размера разделов слишком долгое время в установщике Debian 6
  • Как подключить зашифрованный раздел MS Windows 7 в Linux?
  • rsync через ssh из linux в windows sbs 2003 несоответствие протокола
  • Совместное использование файлов с Windows
  • Как заставить samba следовать символической ссылке за пределами общего пути
  • Несколько проблем с настройкой Windows 10 и Ubuntu 14.04.03 с двойной загрузкой
  • Как подключить Windows / Samba к Windows?
  • Linux и Unix - лучшая ОС в мире.