2014-04-14 19 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不在與批處理文件相同的實例中運行。該變量在另一個進程中設置,並且在環境副本中進行更改時,它們在父進程中不可見。