1

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

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

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

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

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

4

2 回答 2

3

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

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

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

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

于 2011-06-08T10:36:49.073 回答
0

步骤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"
)
于 2011-06-23T17:17:47.580 回答