Za pomocą polecenia „start” z parametrami przekazanymi do uruchomionego programu

223

Mam maszynę wirtualną w Virtual PC 2007.

Aby uruchomić go z pulpitu, mam następujące polecenie w pliku wsadowym:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

Ale to pozostawia monit dos na maszynie hosta, dopóki maszyna wirtualna nie zostanie wyłączona, a ja wyjdę z konsoli wirtualnego komputera. To irytujące.

Dlatego zmieniłem polecenie, aby zamiast tego użyć polecenia START:

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

Ale dusi parametry przekazywane do wirtualnego komputera.

START /?wskazuje, że parametry rzeczywiście idą w tym miejscu. Czy ktoś użył START do uruchomienia programu z wieloma argumentami wiersza poleceń?

JosephStyons
źródło

Odpowiedzi:

466

START ma osobliwość obejmującą podwójne cudzysłowy wokół pierwszego parametru. Jeśli pierwszy parametr ma podwójne cudzysłowy, używa go jako opcjonalnego TYTUŁU dla nowego okna.

Wierzę, że chcesz:

start "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

Innymi słowy, nadaj mu pusty tytuł przed nazwą programu, aby go sfałszować.

Tim Farley
źródło
2
Czy to jest przestarzałe? W Win 7 dostajęStart-Process : Cannot validate argument on parameter 'FilePath'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again
geotheory
1
Kto by to sobie wyobraził. Już sama liczba głosów pozytywnych na twoją odpowiedź powinna być wystarczającym powodem dla Microsoft, aby naprawić tę „osobliwość”.
Piyush Soni,
7
@geotheory Zdaję sobie sprawę, że to stary komentarz, ale w PowerShell start jest aliasem dla Start-Process. W cmd.exe (nieco przestarzały, ale nie przestarzały) „start” jest inny. Oba są przeznaczone do uruchamiania innych procesów, ale start to stara wbudowana komenda w cmd.
Adam Plocher
To spowodowało wiele bólu głowy. Dzięki za rozwiązanie!
uceumern
15

Zamiast pliku wsadowego możesz utworzyć skrót na pulpicie.

Ustaw cel na:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

i wszystko gotowe. Ponieważ nie uruchamiasz wiersza polecenia, aby go uruchomić, nie będzie DOS Box.

Ferruccio
źródło
3

Spacje to problemy DOS / CMD, więc powinieneś udać się na Ścieżkę poprzez:

cd "c:\program files\Microsoft Virtual PC"

a następnie po prostu uruchom VPC poprzez:

start Virtual~1.exe -pc MY-PC -launch

~1oznacza pierwszy exez "Virtual"na początku. Więc jeśli istnieje "Virtual PC.exe"i "Virtual PC1.exe"pierwszy, to będzie Virtual~1.exedrugi Virtual~2.exei tak dalej.

Lub użyj klienta VNC, takiego jak VirtualBox.

ghostdog21
źródło
1
Wygląda to na rozsądne obejście, ale tak naprawdę nie rozwiązuje problemu leżącego u podstaw zaakceptowanej odpowiedzi.
Sam
1
to nie zadziała, jeśli krótkie nazwy plików nie są włączone. Zawsze wyłączam nazwy plików 8.3 w moich systemach
phuclv
1

Żadna z tych odpowiedzi nie działała dla mnie.

Zamiast tego musiałem użyć polecenia Call:

Call "\\Path To Program\Program.exe" <parameters>

Nie jestem pewien, czy to faktycznie czeka na zakończenie ... Instalowany przeze mnie C ++ Redistributable poszedł wystarczająco szybko, że to nie miało znaczenia

JustAnotherMikhail
źródło
@rene dzięki za edycję. Jeśli dodam więcej odpowiedzi, na pewno
użyję
0

Odpowiedź w „osobliwości” jest poprawna i bezpośrednio odpowiada na pytanie. Jak odpowiedział TimF, ponieważ pierwszy parametr jest w cudzysłowie, jest traktowany jak tytuł okna.

Zauważ też, że opcje Virtual PC są traktowane jako opcje samego polecenia „start” i nie są ważne dla „start”. Dotyczy to wszystkich wersji systemu Windows, które mają polecenie „start”.

Ten problem z traktowaniem cytowanego parametru jako tytułu przez „start” jest jeszcze bardziej irytujący niż tylko opublikowany problem. Jeśli uruchomisz to:

start "some valid command with spaces"

Otrzymasz nowe okno wiersza polecenia z oczywistym wynikiem dla tytułu okna. Co bardziej denerwujące, to nowe okno nie dziedziczy dostosowanej czcionki, kolorów ani rozmiaru okna, jest tylko domyślnym ustawieniem cmd.exe.

BitDreamer
źródło
0

Jeśli chcesz przekazać parametr i plik .exe do folderu testowego na dysku c:

start "parameter" "C:\test\test1.exe" -pc My Name-PC -launch

Jeśli nie chcesz przekazywać parametru i pliku .exe do folderu testowego na dysku c:

start "" "C:\test\test1.exe" -pc My Name-PC -launch

Jeśli nie chcesz przekazywać parametru i pliku .exe do folderu testowego dysku H: (Any Other)

start "" "H:\test\test1.exe" -pc My Name-PC -launch

Mack
źródło
0

Jeśli musisz użyć podwójnego cudzysłowu w dowolnym parametrze, możesz otrzymać błąd: „c: \ somepath” nie jest rozpoznawane jako wewnętrzne lub zewnętrzne polecenie, program operacyjny lub plik wsadowy ”. Sugeruję poniższe rozwiązanie, gdy używasz podwójnego znaku qoutation: https://stackoverflow.com/a/43467194/3835640

Mustafa Kemal
źródło
0

Możesz używać cudzysłowów, używając [ /D"Path"] /D tylko do podania ścieżki, a nie programu ścieżka +. Wygląda na to, że cały kod w tym samym wierszu, który następuje, wraca do normy, co oznacza, że ​​nie trzeba oddzielać ścieżki i pliku.

    start  /D "C:\Program Files\Internet Explorer\" IEXPLORE.EXE

lub:

    start  /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE

uruchomi IE z domyślną stroną internetową.

    start  /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE www.bing.com

zaczyna się od Bing, ale nie resetuje strony głównej.

/D oznacza „katalog” i używanie cudzysłowów jest OK!

ŹLE PRZYKŁAD:

    start  /D "TITLE" "C:\Program Files\Internet Explorer\IEXPLORE.EXE"

daje:

BŁĄD „ Bieżący katalog jest nieprawidłowy.

/Dmusi następować tylko ścieżka do katalogu. Następnie spację i plik wsadowy lub program, który chcesz uruchomić / uruchomić

Testowany i działa pod XP, ale Windows Vista / 7/8 może wymagać pewnych zmian w UAC.

-Mrbios

Mrbios
źródło
-1

/b parametr

start /b "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch
T.Todua
źródło
Co robi ten parametr?
Azeezah M,
3
@AzeezahM / b oznacza, że ​​nowe okno cmd nie zostanie otwarte. To jednak nie odpowiada na pytanie op.
aclave1,
-4

czy próbowałeś:

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" "-pc MY-PC -launch"

?

albertein
źródło
-4

Umieść polecenie w pliku wsadowym i wywołaj to z parametrami.

Czy próbowałeś już tego? (Przenieś cytat końcowy, aby zawrzeć parametry)

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe -pc MY-PC -launch"
Mark Allen
źródło
-4

Zmień „Virtual PC.exe” na nazwę bez miejsca, na przykład „VirtualPC.exe” w folderze. Kiedy piszesz za start "path"pomocą „”, CMD uruchamia nowe okno cmd ze ścieżką jako tytułem. Zmień nazwę na nazwę bez spacji, napisz to w Notatniku, a następnie zapisz jak Name.cmd lub Name.bat:

CD\
CD Program Files
CD Microsoft Virtual PC
start VirtualPC.exe
timeout 2
exit

To polecenie przekieruje CMD do folderu, uruchom VirualPC.exe, poczekaj 2 sekundy i wyjdź.

Rafael Pereira
źródło
1
Co się stanie, jeśli oprogramowanie zostanie zaktualizowane? Nagle masz osieroconego virtualpc.exe.
Michael Beck