2013-03-27 21 views
13

Bilgisayarımdaki bazı cmd sorunlarından kaçınmak için bir toplu iş dosyası oluşturmak istiyorum, ancak bunun için String kullanıcı girdisini alıp bir komut olarak çalıştırmam gerekiyor.Toplu iş dosyası dizelerini komut olarak nasıl yapabilirim?

Temelde ben toplu dosya girdi istediğinde bir komut yazın yapmak ve komut bilgisayar koşmak, Python en os modülüne benzer (sınıf?)

cevap

23

Basitçe atamak sahip olmak istediğini o girdi isteyecek şekilde bir program

örn

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

Ben ila% myvar% çıktısını yönlendirmek istiyorsa hangi dosya? Denedim: '% myvar%> myfile.txt', ama şikayet ediyor:" Komutun sözdizimi yanlış. " – Apteryx

+2

@Apteryx: Basit bir şekilde ">" yazan bir karta: "^>" Bu, aşağıdaki karakterin özel anlamını kapatır. – Magoo

4

Kullanım set /p komut sanki bir değişkene dize, ardından değişkeni "yürütme". Bu komut ayrıca bir mesaj görüntüler. Örnek: En basit

@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

, sen sonuca bir ortam değişkeni, komuta isteyecek şekilde set /p kullanmak istiyorum, o zaman sadece kendisi tarafından çevre değişkeni genişletmek ve OS olarak çalıştırmaya çalışır komut.

Sen döngü toplu kullanabilir
+1

Endoro'nun yanıtı, daha temiz bir çıktı elde etmek için 'echo off'u daha iyi tamamla- yarak 'set' i çevirerek toplu karakterlerle çalışırken tüm iyi kodlama uygulamaları olan bazı karakterlerden kaçmaktan kaçınmaktır. Ama sadece sorulan soruya odaklanmak için minimalist kodu seviyorum. Tercih ettiğiniz biçimi oylayın veya kabul edin. :-) –

0

, bu güç kabuk komut isteminde benim için çalışıyor, ancak

SET /P COMMAND=Command: 
%COMMAND% 
:

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 
İlgili konular