【问题标题】:How do I make a batch file run strings as commands?如何使批处理文件将字符串作为命令运行?
【发布时间】:2013-03-27 12:11:54
【问题描述】:

我想制作一个批处理文件来规避计算机上的一些 cmd 问题,但为此我需要能够接受 String 用户输入并将其作为命令运行。

基本上我想做的是在批处理文件要求输入时输入命令,然后让计算机运行该命令,类似于 python 的 os 模块(类?)

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:

    只需将字符串分配给一个变量,然后像程序一样“执行”该变量

    例如

    set  myvar=ECHO Hello, World!
    %myvar%
    

    【讨论】:

    • 如果我想将 %myvar% 的输出重定向到一个文件怎么办?我试过:%myvar% > myfile.txt,但它抱怨:“命令的语法不正确。”
    • @Apteryx:只需用插入符号“转义”>^> 这会关闭以下字符的特殊含义。
    • 值得注意的是变量赋值后没有引号。 (我正在尝试类似于set myvar="ECHO Hello, World" 的东西,我花了一段时间才弄清楚)。
    • 我花了一个小时才找到这个答案。如果它是搜索中的第一个...
    【解决方案2】:

    使用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%
    

    【讨论】:

      【解决方案3】:

      最简单的方法是,您想使用set /p 提示输入命令,为结果设置环境变量,然后简单地自行扩展环境变量,操作系统将尝试将其作为命令执行。

      SET /P COMMAND=Command:
      %COMMAND%
      

      【讨论】:

      • Endoro 的答案更“完整”,将echo off 转为更清晰的输出,将set 括在引号中以避免转义某些字符等,这些都是工作时很好的编码习惯与批处理文件。但我喜欢极简代码,只关注所提出的问题。投票或接受您喜欢的任何格式。 :-)
      【解决方案4】:

      您可以使用批处理 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        • 2018-09-08
        • 1970-01-01
        • 1970-01-01
        • 2018-02-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多