【问题标题】:Windows batch file commands and variablesWindows 批处理文件命令和变量
【发布时间】:2011-09-10 16:49:45
【问题描述】:

我不确定这是否可能,但我需要的是一个在 Windows 7 上运行并执行以下操作的普通 bat/cmd 文件:

第 1 步。findstr - 它应该使用正则表达式引擎找到特定的字符串。假设我们正在寻找一个包含在标签<id>123</id> 中的数字(假设这样的文件是唯一的,所以返回一个值)。该命令会将123 打印到屏幕上,但我需要将它保存在一个变量中(不知道如何)。

第 2 步。在另一个目录上再次调用 findstr。现在我们想要找到一个文件名(/m 选项),其中包含我们在步骤 1 中保存的值(在另一组文件中,即另一个目录中)。再次将结果(文件名)保存在变量中。比如说,file_123.txt 符合条件。

第 3 步。将我们通过第二次 findstr 调用 (file_123.txt) 获得的文件复制到另一个位置。

整个问题围绕着如何将windows命令的结果保存到变量中,以便能够将这些值作为参数提供给后续命令。

【问题讨论】:

    标签: windows batch-file cmd dos windows-console


    【解决方案1】:

    在变量中获取命令输出的一般方式是

    for /f %%x in ('some command') do set Var=%%x
    

    (有各种变化,取决于上下文和确切的需求)。

    关于你的步骤,午饭后我会详细说明。有一些错综复杂的地方。

    【讨论】:

      【解决方案2】:

      第 1 步:

      FOR /F "USEBACKQ tokens=1-20 delims=<>" %%A in (`FINDSTR "123" "path of file to search in"`) DO (
       SET var=%%B
      )
      
      ECHO %var%
      

      了解 delims 会根据输出的“分隔”部分(无论是空格、特殊字符等)而改变

      第 2 步和第 3 步:

      FOR /F "USEBACKQ tokens=*" %%A IN (`DIR "Path" /A ^| FIND /I "%var%"`) DO (
       COPY /Y "%%A" "C:\New\Path\%%~nxA"
      )
      

      【讨论】:

        猜你喜欢
        • 2018-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-22
        相关资源
        最近更新 更多