2013-03-27 10 views
13

Chcę utworzyć plik wsadowy, aby ominąć niektóre problemy z cmd na moim komputerze, ale do tego potrzebuję móc pobierać dane użytkownika String i uruchamiać je jako polecenie.Jak utworzyć plik wsadowy uruchamiać ciągi jako polecenia?

Zasadniczo co chcę być w stanie zrobić, to wpisać komendę, gdy plik wsadowy prosi o wejście i mają uruchomić komputer, że polecenie, podobny do modułu os Pythona (klasy?)

Odpowiedz

23

wystarczy przypisać łańcuch do zmiennej, a następnie "execute" zmienną tak, jakby to był program

np

set myvar=ECHO Hello, World! 
%myvar% 
+0

Co jeśli chcę przekierować wyjście% MyVar%, do plik? Próbowałem: '% myvar%> mójplik.txt', ale narzeka:" Składnia polecenia jest niepoprawna. " – Apteryx

+2

@Apteryx: Po prostu "uciec" '>' z karetką: '^>' To wyłącza specjalne znaczenie następującej postaci. – Magoo

4

użyć polecenia set /p skłonić do wejścia. To polecenie wyświetla również komunikat. Przykład:

@echo off 
set "command=dir" 
set /p "command=type in a command: " 
echo.command is: %command% 
echo.press any key or ^<CTRL+C^> to abort . . . 
>nul pause 
%command% 
2

W najprostszej, którego chcesz użyć set /p skłonić do polecenia, ustawienie zmiennej środowiskowej do wyniku, a następnie po prostu poszerzyć zmienną środowiskową sama i OS będzie próbował wykonać go jako dowództwo.

SET /P COMMAND=Command: 
%COMMAND% 
+1

Odpowiedź Endoro jest bardziej "kompletna" poprzez "wyłączenie echa" dla czystszego wyjścia, dołączając "set" w cudzysłowach, aby uniknąć ucieczki od niektórych znaków itp., Które są dobrą praktyką kodowania podczas pracy z plikami wsadowymi. Ale lubię minimalistyczny kod, aby skupić się tylko na zadawanym pytaniu. Głosuj lub akceptuj dowolny preferowany format. :-) –

0

Można wykorzystać daną partię do pętli, to działa na mnie w wierszu polecenia, ale nie skorupę zasilania:

Microsoft Windows [Version 6.3.9600] 
(c) 2013 Microsoft Corporation. All rights reserved. 

C:\Users\Administrator>FOR /F "delims=" %i IN ('python -c "print('set wow=yep')"') DO set toexec=%i 

C:\Users\Administrator>set toexec=set wow=yep 

C:\Users\Administrator>%toexec% 

C:\Users\Administrator>echo %wow% 
yep 
Powiązane problemy