Command line Cygwin-从“运行脚本”;运行命令";

Command line Cygwin-从“运行脚本”;运行命令";,command-line,cygwin,silent,Command Line,Cygwin,Silent,我要说的是: C:\foo.bsh 我希望能够通过windows运行命令运行此命令: Start -> Run Windows Key + R 然后输入一些小的字符,比如“foo”和回车键 但是,我不希望cmd提示符可见。此脚本对IDE进行一些预处理。我不希望cmd提示符在IDE进程的生命周期内保持打开状态 我试过: 1) 创建包含以下内容的bat文件: c:\cygwin\bin\bash --login "C:\foo.bsh" (this fails because it kee

我要说的是:

C:\foo.bsh
我希望能够通过windows运行命令运行此命令:

Start -> Run
Windows Key + R
然后输入一些小的字符,比如“foo”和回车键

但是,我不希望cmd提示符可见。此脚本对IDE进行一些预处理。我不希望cmd提示符在IDE进程的生命周期内保持打开状态

我试过:

1) 创建包含以下内容的bat文件:

c:\cygwin\bin\bash --login "C:\foo.bsh" (this fails because it keeps a cmd open)
2) 使用bat_2_exe_转换器将上述bat文件转换为exe(不会使cmd静音)

想法


编辑:目前的解决方案建议从实际的cygwin外壳中键入一些内容。我试图通过在Windows运行命令中键入一些简短的内容来获得更快的解决方案。另外,
nohup命令;退出
不会自动终止该框-但是我可以手动终止它而不终止IDE进程。run命令接受快捷方式(.lnk)、bat、exe。

当脚本仍在运行时,终端无法关闭,请尝试以下命令:

"nohup C:\foo.bsh; exit" 

这样,您的脚本将被后台化并与终端分离,它应该很快退出,以便终端离开。我认为使用这种方法,窗口可能仍然“闪烁”,但结果应该比您得到的更好。

另一种不完美的可能性是通过快捷方式运行脚本,并将快捷方式的运行选项设置为“最小化”。

尝试的run.exe命令。这是一个大型安装,是一个适用于Windows机器的完整unix环境。假设您将其安装在
c:\cygwin\

不神秘,只需运行
c:\cygwin\bin\run.exe
,就可以执行无dos窗口

您可以从任何DOS窗口运行它(从“开始”菜单运行cmd.exe)。你不需要从cygwin那里运行它

为了简化操作,请将
C:\cygwin\bin
附加到%PATH%env var(我的计算机)中→ 性质→ 先进的→ 环境变量)(Felipe Alvarez评论值得称赞)

现在你可以打字了

c:\cygwin\bin\run.exe "C:\foo.bsh"
您必须使用此命令在“开始”菜单中创建链接,以便能够使用Win-R运行它

以下是runcommand的手册页:

$ man run
RUN(1)                             run 1.3.0                            RUN(1)

NAME
       run - start programs with hidden console window

SYNOPSIS
       run [ -p path ] command [ -wait ] arguments

       runcommand [ -p path ] [ -wait ] arguments

DESCRIPTION
       Windows  programs  are  either  GUI  programs or console programs. When
       started console  programs  will  either  attach  to an existing console
       or  create a new one. GUI programs can  never attach to an exiting con‐
       sole. There is no way to attach to an existing console but hide  it  if
       started as GUI program.

       run  will  do this for you. It works  as intermediate and starts a pro‐
       gram but makes the console window hidden.

       With -p path you can add path to the PATH environment variable.

       Issuing -wait as first program  argument will make run wait for program
       completition, otherwise it returns immediately.

       The  second  variant  is  for   creating wrappers. If the executable is
       named runcommand (eg runemacs), run will try  to start the program  (eg
       emacs).

EXAMPLES
       run -p /usr/X11R6/bin xterm

       run emacs -wait
       runemacs -wait

       run make -wait

AUTHORS
       Charles S. Wilson

       Harold L Hunt II

       Jehan Bing

       Alexander Gottwald

Version 1.3.0                    November 2005                          RUN(1)

它一直困扰着我一段时间,我找不到解决这个问题的办法,但我终于找到了正确的组合

如果路径上有cygwin,您只需执行以下操作:
运行bash test.js

如果cygwin不在您的路径上,您可以这样做:
c:\cygwin\bin\run.exe-p/bin bash test.js

如果您希望对创建的窗口进行更多控制(最大化等),那么您也可以使用
cygstart

资料来源:
-内维斯回答了上面的问题(尽管这本身还不足以让我个人弄明白)
-

您可以使用

c:\cygwin\bin\bash -l /path/to/script_to_interpret.sh
……或者

c:\cygwin\bin\bash -l -c /path/to/executable_script.sh
注意:
-l
标志告诉bash“就像它是通过登录直接调用的一样”并使用。这一点很重要,因为它设置了启动cygwin终端时所依赖的$PATH和其他内容。如果您不包括
-l
--login
,那么当您尝试调用除bash内置之外的任何东西时,都会得到“command not found”

2之间的区别就像做

bash script_to_interpret.sh
……还有

./executable_script.sh

…在*尼克斯。前者使用bash解释脚本。后者执行脚本(仅当它具有
chmod+x可执行文件\u script.sh
)并根据其行对其进行解释。如果您的可执行文件根本不是脚本(如从源代码编译的*nix二进制文件),您也可以使用后一种方法。)

我正在运行Cygwin64,xwin服务器链接指向:

C:\cygwin64\bin\run.exe/usr/bin/bash.exe-l-C/usr/bin/startxwin.exe

这将在任务栏上创建图标和通知。我不喜欢那样。该图标相当无用,通知中包含了.XWinrc中的所有菜单选项

所以。。。我编写了一个.vbs脚本以静默运行此命令并使图标消失:

Set objShell = CreateObject("WScript.Shell")
objShell.Run("C:\cygwin64\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe"), 0

转到安装cygwin的目录(在我的机器上是c:/cygwin64/bin)
一旦出现,只需键入“bash.exe”

不好:它仍然会打开一个终端窗口,然后关闭它,窃取焦点并使任务栏闪烁。我可以使用run来执行.sh Shell脚本吗?有办法获得输出吗?我在cygwin安装中没有
run
命令,但我能够使用
cygstart
命令(这似乎模拟了双击图标,启动您“单击”的任何内容)要让批处理文件在cmd窗口中运行,请使用
bash
命令:
C:\\cygwin64\\bin\\bash--login-C'foo.bsh
非常感谢您的回答!问题是,当我执行脚本时,会出现以下错误:
C:/cygwin64/home/ale/kmeans2:148行:awk:command not found
C:/cygwin64/home/ale/kmeans2:149行:dirname:command not found
C:/cygwin64/home/ale/kmeans2:150行:basename:command not found
C:/cygwin64/home/ale/kmeans2:306行:mkdir:command not found。你知道可能有什么问题吗?写一篇新文章吧。你不会从一次提问中得到帮助注释。同时发布您的脚本。@Alejandrozdziejski该bash中的
$PATH
将丢失
/bin/
,etc@AlejandroLozdziejski尝试
c:\cygwin\bin\bash-l-c/path/to/script
,这对methe
-l-c
非常有效,除了我还需要将参数传递给bash之外脚本,但由于某些原因它无法识别它们…如果我没记错的话,
cygstart
允许Windows打开命令/链接等,例如,您可以
cygstart文件://C:///code>,它将打开指向
C:///code>的Windows资源管理器,而
run
不具备此功能