Board logo

标题: [文本处理] {已解决}批处理for循环传递字符串给指定变量 [打印本页]

作者: 旺财11k    时间: 2023-1-8 12:24     标题: {已解决}批处理for循环传递字符串给指定变量

本帖最后由 旺财11k 于 2023-1-19 19:26 编辑
  1. @echo off
  2. set devices=1
  3. for %%f in (adb devices) do set "devices=%%f"
  4. echo %devices%
  5. cmd /k
复制代码
怎么写才可以把adb devices输出的序列号传递给变量%devices%?萌新向大佬!们求助!!
作者: 旺财11k    时间: 2023-1-8 12:25

求助!!!!!  大佬们
作者: 77七    时间: 2023-1-8 12:58

你单独运行你获取序列号的命令,并把命令和结果发出来看看,就好写了
作者: 旺财11k    时间: 2023-1-8 13:29

回复 3# 77七


    就是 adb devices  把获取到的设备序号传递给变量a就行
我cmd  输入 adb devices 就会提示
List of devices attached
d225ca7e        device
作者: 77七    时间: 2023-1-8 14:52

本帖最后由 77七 于 2023-1-8 20:38 编辑
  1. @echo off
  2. for /f "tokens=1 delims= " %%a in ('adb devices ^| findstr "device"') do (
  3.         set device=%%a
  4. )
  5. echo %device%
  6. pause
复制代码

试试这样行吗
作者: 旺财11k    时间: 2023-1-8 20:19

回复 5# 77七


    ECHO 处于关闭状态。我的会这样
作者: 77七    时间: 2023-1-8 20:39

回复 6# 旺财11k

已修改,再试试
作者: Batcher    时间: 2023-1-9 09:12

回复 1# 旺财11k


如果5楼更新之后的代码还是不行,请执行命令:
  1. adb devices > 1.txt
复制代码
把1.txt上传到网盘,我试试。

把命令执行结果赋值给变量,不能直接用for,而应该用for /f
参考for命令教程第18、28页:
http://bbs.bathome.net/thread-31727-1-1.html



作者: 浅暮丶千殇    时间: 2023-1-9 17:40

回复 5# 77七

借用下此楼代码,修改为
  1. @echo off
  2. for /f %%a in ('adb devices ^| findstr device') do (
  3.         set device=%%a
  4. )
  5. echo %device%
  6. pause
复制代码
1.for /f 默认使用空格作为分隔符, 可以不使用分隔参数
2.findstr 搜索的字符串如果没有空格,可以省略 双引号,如果 搜索的字符串含有空格,必须使用  /C:"<搜索的字符串>"
作者: 旺财11k    时间: 2023-1-19 19:26

回复 9# 浅暮丶千殇


    感谢大佬 已解决
作者: 旺财11k    时间: 2023-1-19 19:26

回复 8# Batcher


    感谢!!!!!已解决
作者: dos-a    时间: 2023-1-19 23:54

本帖最后由 dos-a 于 2023-1-20 00:23 编辑

回复 11# 旺财11k


    我的发你把,,
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1 delims= " %%a in ('adb devices') do (
set devices=%%a
)
echo !devices!
pause

delims 后 空白处是空格
setlocal enabledelayedexpansion
延迟变量作用(百度即可 比较详细)
作者: dos-a    时间: 2023-1-20 00:04

本帖最后由 dos-a 于 2023-1-20 00:08 编辑

回复 8# Batcher

,大佬通用方法是吧




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2