Batch file 将var设置为管道findstr输出,并在字符串末尾处理CRLF
需要帮助更好地理解延迟扩展和在管道findstr输出端处理CRLFBatch 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将
从输出中的空白行可以看出,这个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%