2011-06-08 123 views
1

我不知道它是否是可能的,但我需要的是,在Windows 7上运行,并做这样的事情一个普通的BAT/CMD文件:Windows批处理文件,命令和变量

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

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

第3步。将由于第二个findstr调用(file_123.txt)而得到的文件复制到另一个位置。

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

回答

3

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

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

(带有各种变型中,根据上下文和究竟是期望的)。

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

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" 
)