2013-03-27 61 views
13

我想製作一個批處理文件來繞過計算機上的一些cmd問題,但爲此我需要能夠將字符串用戶輸入並將其作爲命令運行。如何使批處理文件運行字符串作爲命令?

基本上我希望能夠做的是鍵入時的批處理文件要求輸入一個命令,並有該命令的計算機運行,類似Python的os模塊(類?)

回答

23

簡單地分配串給一個變量,然後,就好像它是一個程序

例如

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

如果我想的%MYVAR%的輸出重定向到一個什麼文件?我試過:'%myvar%> myfile.txt',但它抱怨:「該命令的語法不正確。」 – Apteryx 2016-03-26 02:17:16

+2

@Apteryx:只需用一個插入符號「逃避」'''''這會關閉以下字符的特殊含義。 – Magoo 2016-03-26 04:52:44

4

使用set /p命令,以提示輸入「執行」的變量中。該命令還會顯示一條消息。例如:

@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

簡單地說,你想用set /p提示輸入命令,環境變量設置爲結果,那麼僅僅通過自身擴張的環境變量和操作系統將嘗試執行它作爲一個命令。

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

通過將'echo off'轉換爲更清晰的輸出,Endoro的答案更「完整」,將'set'加入引號中以避免轉義某些字符等,這些都是批處理文件的良好編程實踐。但我喜歡簡約的代碼,只關注所問的問題。表決或接受你喜歡的任何格式。 :-) – 2013-03-27 14:10:56

0

您可以使用批處理for循環,這對我的作品在命令提示符,而不是電源外殼:

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 
相關問題