如何获取myVar
属性的值以在代码的其他部分中使用。
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 :(得分: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%
我不理解你想要做什么。
但假设您正在查找目录中包含字符串.xml
的{{1}}文件。代码将是:
"2014-04-12"
答案 1 :(得分: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
答案 2 :(得分: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
未在与批处理文件相同的实例中运行。该变量在另一个进程中设置,并且当更改在环境副本中进行时,它们在父进程中不可见。