2014-04-14 57 views
-3

如何获取myVar属性的值以用于其他代码部分。用于管道输出变量的Windows批处理

set myVar = 
ECHO "httpsxxxxxx_cmidxxxxx_2014-04-12_14-54-53_abc3654.xml" | find /i "2014-04-12" | (set /p myVar= & set myVar) 
ECHO myvar "%myVar%" /**** This is empty String**********/ 
+0

你能解释一下你想得到什么吗?从xml文件中提取someting,这仅仅是一个概念证明,....? –

+0

http://stackoverflow.com/questions/how-to-ask – SachaDee

回答

0

尝试这样的:

@echo off 
for /f "delims=" %%a in ('ECHO "httpsxxxxxx_cmidxxxxx_2014-04-12_14-54-53_abc3654.xml" ^| find /i "2014-04-12"') do set MyVar=%%a 

echo %MyVar% 

我不anderstand你正在尝试做的。

但是,假设您正在查找在目录中包含字符串"2014-04-12".xml文件。该代码将是:

@echo off 
for /f "delims=" %%a in ('dir /b/a-d *.xml ^| find /i "2014-04-12"') do set MyVar=%%a 
0

注解代码:

1: set myVar = 
2: ECHO "httpsxxxxxx_cmidxxxxx_2014-04-12_14-54-53_abc3654.xml" | find /i "2014-04-12" | (set /p myVar= & set myVar) 
3: ECHO myvar "%myVar%" /**** This is empty String**********/ 

线1 :,有myVar=之间的空间。这是不正确的。 CMD.EXE认为有一个变量叫做"myVar "。将其更改为"myVar"。 在线2 :,我想你打算使用TYPE来输出文件“httpsxxxxxx_cmidxxxxx_2014-04-12_14-54-53_abc3654.xml”。在任何情况下,你可以写这个,而是:

FIND /I "2014-04-12" httpsxxxxxx_cmidxxxxx_2014-04-12_14-54-53_abc3654.xml 
0

也许你问的是:

此行

echo "someValue" | find /i "Value" | (set /p myVar= & set myVar) 

会显示您的变量设置。 echo命令将其输出发送到find命令,并将其输出传送到set /p,将值分配给变量,set将在控制台中显示的值。

然后下面的行

echo myvar "%myVar%" 

没有显示出数据。为什么?

cmd发现一个管的定义,与数据流从一个节目到另一个,每个管中的元件是与父进程的环境块自身拷贝(其中批处理文件单独的工艺正在运行),因此set /p myVar= & set myVar不在与批处理文件相同的实例中运行。该变量在另一个进程中设置,并且在环境副本中进行更改时,它们在父进程中不可见。

相关问题