Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 将var设置为管道findstr输出,并在字符串末尾处理CRLF_Batch File_Adb - Fatal编程技术网

Batch file 将var设置为管道findstr输出,并在字符串末尾处理CRLF

Batch file 将var设置为管道findstr输出,并在字符串末尾处理CRLF,batch-file,adb,Batch File,Adb,需要帮助更好地理解延迟扩展和在管道findstr输出端处理CRLF 从输出中的空白行可以看出,这个FUNSTR的字符串在结尾有CRLF。我想这是 因为(在某些操作系统上),当管道传输时 输出: DeviceSoftwareOTA.apk_ ----- G="DeviceSoftwareOTA.apk_ " percent var=[DeviceSoftwareOTA.apk_] exclaim var=[DeviceSoftwareOTA.apk_ ] ----- 我使用下面的For/F将

需要帮助更好地理解延迟扩展和在管道findstr输出端处理CRLF

从输出中的空白行可以看出,这个FUNSTR的字符串在结尾有CRLF。我想这是 因为(在某些操作系统上),当管道传输时

输出:

DeviceSoftwareOTA.apk_

-----
G="DeviceSoftwareOTA.apk_
"
percent var=[DeviceSoftwareOTA.apk_]
exclaim var=[DeviceSoftwareOTA.apk_
]
-----
我使用下面的For/F将var设置为命令输出。在过去我一直使用!变量!,它有CRLF,并调用了一个小程序来剥离CRLF。我刚刚发现,无论如何,在这种情况下,%var%给出的输出没有CRLF!显然,我希望var是准确的。在这种用法中,如果没有CRLF,%var%是否正确?为什么会这样

@Echo off
SETLOCAL EnableDelayedExpansion

For /F "tokens=1*" %%G IN ('adb shell ls -R /system/priv-app ^| findstr DeviceSoftwareOTA.apk.*') DO (
    echo G="%%G"
    set var=%%G
    )
echo percent var=[%var%]
echo exclaim var=[!var!]
echo -----
exit
输出:

DeviceSoftwareOTA.apk_

-----
G="DeviceSoftwareOTA.apk_
"
percent var=[DeviceSoftwareOTA.apk_]
exclaim var=[DeviceSoftwareOTA.apk_
]
-----
使用set变量的输出进行编辑

set var
echo -----
返回

var=DeviceSoftwareOTA.apk_

-----

您没有向我们显示来自
echo G=“%%G”
的输出,也没有显示来自
adb
的相关输出。在所有可能的情况下,
adb
返回的字符串中都有CR。查看
set var
@Magoo:edited的输出以及
echo G=“%%G”
set var的输出是否有用?不知道你的意思。无论如何,我想我是在回忆!瓦尔!当For/F被嵌套时,我通过进一步的测试发现了这一点。谢谢你给我时间。我可能会删除这个。看来问题的根源已经找到了。我会尝试通过
更多的
管道化findstr输出,但无法测试atm,因为我信任的编辑器已经升级。奇怪的是
%var%
!瓦尔不同…我会尝试,在
for
循环之外,
设置“var=%var:~0,-1%”
,然后
echo
%var%
(我使用
echo+%var%+
将输出放在两个非常明显的字符之间)。这将删除
var
的最后一个字符,该字符似乎是CR。不幸的是,仍然无法测试。。。我会尝试启动一个Delphi程序来创建一个可使用的测试文件。好吧-在构建一个终止CRCRLF的文件后,它似乎很高兴
设置“var=%var:~0,-1%”
,然后
echo%var%
您没有向我们显示
echo G=“%%G”
的输出,也没有显示
adb
的相关输出。在所有可能的情况下,
adb
返回的字符串中都有CR。查看
set var
@Magoo:edited的输出以及
echo G=“%%G”
set var的输出是否有用?不知道你的意思。无论如何,我想我是在回忆!瓦尔!当For/F被嵌套时,我通过进一步的测试发现了这一点。谢谢你给我时间。我可能会删除这个。看来问题的根源已经找到了。我会尝试通过
更多的
管道化findstr输出,但无法测试atm,因为我信任的编辑器已经升级。奇怪的是
%var%
!瓦尔不同…我会尝试,在
for
循环之外,
设置“var=%var:~0,-1%”
,然后
echo
%var%
(我使用
echo+%var%+
将输出放在两个非常明显的字符之间)。这将删除
var
的最后一个字符,该字符似乎是CR。不幸的是,仍然无法测试。。。我将尝试启动一个Delphi程序来创建一个可修改的测试文件。好吧-在构建一个终止CRCRLF的文件后,它似乎对设置“var=%var:~0,-1%”感到满意。
然后
echo%var%