【发布时间】:2013-03-27 12:11:54
【问题描述】:
我想制作一个批处理文件来规避计算机上的一些 cmd 问题,但为此我需要能够接受 String 用户输入并将其作为命令运行。
基本上我想做的是在批处理文件要求输入时输入命令,然后让计算机运行该命令,类似于 python 的 os 模块(类?)
【问题讨论】:
标签: windows batch-file cmd
我想制作一个批处理文件来规避计算机上的一些 cmd 问题,但为此我需要能够接受 String 用户输入并将其作为命令运行。
基本上我想做的是在批处理文件要求输入时输入命令,然后让计算机运行该命令,类似于 python 的 os 模块(类?)
【问题讨论】:
标签: windows batch-file cmd
只需将字符串分配给一个变量,然后像程序一样“执行”该变量
例如
set myvar=ECHO Hello, World!
%myvar%
【讨论】:
%myvar% > myfile.txt,但它抱怨:“命令的语法不正确。”
>:^> 这会关闭以下字符的特殊含义。
set myvar="ECHO Hello, World" 的东西,我花了一段时间才弄清楚)。
使用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%
【讨论】:
最简单的方法是,您想使用set /p 提示输入命令,为结果设置环境变量,然后简单地自行扩展环境变量,操作系统将尝试将其作为命令执行。
SET /P COMMAND=Command:
%COMMAND%
【讨论】:
echo off 转为更清晰的输出,将set 括在引号中以避免转义某些字符等,这些都是工作时很好的编码习惯与批处理文件。但我喜欢极简代码,只关注所提出的问题。投票或接受您喜欢的任何格式。 :-)
您可以使用批处理 for 循环,这对我在命令提示符下有效,但不适用于 power shell:
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
【讨论】: