Cygwin - kjøre skript silenty fra "run command"

stemmer
32

Jeg har script kan si:

C:\foo.bsh

Jeg ønsker å være i stand til å kjøre denne kommandoen via vinduer kjøre kommandoen:

Start -> Run
Windows Key + R

og skriv noe lite som 'foo' og trykke retur.

Men jeg ønsker ikke en cmd bedt om å være synlig. Dette skriptet gjør noe forbehandling for en IDE. Jeg ønsker ikke cmd bedt om å være åpen for levetiden til IDE prosessen.

Jeg har prøvd:

1) Opprette en bat fil med følgende innhold:

c:\cygwin\bin\bash --login C:\foo.bsh (this fails because it keeps a cmd open)

2) Omdannelse av det ovenfor bat fil til en exe ved hjelp bat_2_exe_converter (ikke gjør det cmd silent)

tanker?

EDIT: Løsningen så langt tyder på noe å skrive fra en faktisk cygwin skall. Jeg prøver å få en raskere løsning ved å ha noe kort jeg kan skrive inn startsignalet Windows. Også den nohup command; exitikke automatisk drepe boksen - men jeg kan manuelt drepe den uten å drepe IDE prosessen. Kjør-kommandoen godtar snarveier (INK-tallet), bat-tallet, exe-tallet.

Publisert på 23/03/2009 klokken 10:57
kilden bruker
På andre språk...                            


7 svar

stemmer
3

Som terminalen ikke kan lukke mens skriptet er fortsatt kjører, prøv kommandoen:

"nohup C:\foo.bsh; exit" 

På denne måten skriptet skal kjøres i bakgrunnen, og løsrevet fra terminalen, og det skal gå fort, så terminalen går unna. Jeg tror at vinduet kan fortsatt 'flash' med denne tilnærmingen, men resultatene bør være bedre enn hva du får.

Svarte 23/03/2009 kl. 11:20
kilden bruker

stemmer
1

En annen ufullkommen mulighet er å kjøre skriptet via en snarvei og sette snarveien Kjør til "minimert".

Svarte 23/03/2009 kl. 11:27
kilden bruker

stemmer
38

Prøv run.exe kommando av cygwin . Det er en stor installasjon, et komplett unix miljø for din Windows-maskin. Anta at du har installert den på c:\cygwin\.

Åpne skallet (bash) og type man run.

Ingen mystikk, bare kjøre c:\cygwin\bin\run.exe <your command here>og du vil ha din ingen dos-vinduet utførelse.

Du kan kjøre den fra en DOS-vindu (kjøre cmd.exe fra startmenyen). Du trenger ikke å kjøre den fra cygwin.

For å gjøre det enklere, føyer C:\cygwin\bintil% PATH% env var (Min datamaskin → Egenskaper → Avansert → miljøvariabler) (Kudos til Felipe Alvarez kommentar).

Nå kan du bare skrive

run "C:\foo.bsh"

Her er mannen siden av 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)
Svarte 18/11/2010 kl. 17:15
kilden bruker

stemmer
9

Det har blitt avlytting meg for en stund kunne jeg ikke finne løsning på dette, men jeg endelig fikk den rette blandingen sammen.

Du kan rett og slett gjøre følgende hvis du har cygwin på veien:
run bash test.js

Hvis cygwin ikke er på banen, kan du gjøre dette:
c:\cygwin\bin\run.exe -p /bin bash test.js

Hvis du er ute etter mer kontroll over skaper vinduet (maksimere, etc) det ser ut som du kan bruke cygstartogså.

Kilder:
- neves svare ovenfor (selv om det ikke var nok i seg selv for meg personlig å finne ut av det)
- http://cygwin.com/ml/cygwin/2008-09/msg00156.html

Svarte 15/04/2011 kl. 21:09
kilden bruker

stemmer
12

Du kan bruke enten ...

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

...eller...

c:\cygwin\bin\bash -l -c /path/to/executable_script.sh

Merk: det -lflagget forteller bash å "handle som om det hadde vært direkte påberopes av login" og bruke Bash oppstartsfiler . Dette er viktig for at den setter inn $ PATH og andre ting du stole på når du starter en cygwin terminal. Hvis du ikke inkluderer -leller --logindu vil få "kommandoen ikke funnet" når du prøver å ringe noe bortsett fra et bash innebygd.

Forskjellen mellom to er som forskjellen mellom å gjøre ...

bash script_to_interpret.sh

...og...

./executable_script.sh

... i * nix. Den tidligere tolker skriptet bruke bash. Den sistnevnte utfører skriptet (bare hvis den har chmod +x executable_script.sh) og tolker det i henhold til dens "shebang" linje. Den siste metoden er også hva du vil gjøre hvis kjørbar er ikke et manus i det hele tatt, som en * nix binær kompilert fra kilden.)

Svarte 20/06/2013 kl. 01:06
kilden bruker

stemmer
2

Jeg kjører Cygwin64 og xwin server koblingen peker til:

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

Dette skaper et ikon og en melding på oppgavelinjen. Jeg liker ikke det. Ikonet er ganske ubrukelig, varslings har alle menyalternativer fra .XWinrc.

Så ... Jeg skrev en VBS script for å stille kjøre denne kommandoen og gjøre ikonet forsvinne:

Set objShell = CreateObject("WScript.Shell")
objShell.Run("C:\cygwin64\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe"), 0
Svarte 02/09/2014 kl. 08:10
kilden bruker

stemmer
-1

Gå til katalogen der du har installert cygwin (på min maskin det er c: / cygwin64 / bin) Når du er der bare skrive "bash.exe"

Svarte 31/08/2016 kl. 13:05
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more