Windows批处理文件命令和变量

时间:2011-06-08 08:44:54

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

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

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

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

步骤3.将我们因第二次findstr电话(file_123.txt)而获得的文件复制到另一个位置。

整个问题转向了关于如何将windows命令的结果保存到变量以便能够将这些值作为参数提供给后续命令的观点。

2 个答案:

答案 0 :(得分:3)

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

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

(根据具体情况和具体情况而有各种变化)。

至于你的步骤,我会在午餐后详细说明。有一些错综复杂的事情。

答案 1 :(得分: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%

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

第2步&amp; 3:

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