Board logo

标题: [文件操作] 求助批处理把返回值以及特定字串导入excel文件 [打印本页]

作者: wqwa    时间: 2020-6-10 14:31     标题: 求助批处理把返回值以及特定字串导入excel文件

想写个小小的 bat,用来实现将命令返回值以及命令内容导入到excel中,命令和返回值不在同一单元格,求大神帮忙指导
作者: Batcher    时间: 2020-6-10 15:30

回复 1# wqwa
  1. >"1.csv" echo "Return","Command"
复制代码

作者: wqwa    时间: 2020-6-10 17:27

回复  wqwa
Batcher 发表于 2020-6-10 15:30



for /f "delims=" %%i in ('adb devices') do set result=!result!%%i\n
echo %result%,"adb devices">>1.csv

发现了新的问题,由于返回的内容是多行的,直接写入csv是自动多行
但是我想把这多行内容贴在一个单元格内怎么处理呢?
作者: Batcher    时间: 2020-6-10 19:40

回复 3# wqwa


加上双引号试试
  1. echo "%result%","adb devices">>1.csv
复制代码

作者: went    时间: 2020-6-10 22:03

多行输出要换行,还要用引号
  1. @echo off
  2. call :print "adb devices"
  3. pause&exit
  4. :print
  5. (
  6. echo "
  7. %~1
  8. echo ","%~1"
  9. )>>1.csv
复制代码
缺点就是会多出两个换行符出来
作者: wqwa    时间: 2020-6-11 11:18

回复 4# Batcher


    貌似沒有效果,因為返回的信息是多行內容,使用我上面的命令只能一行一行的寫入csv文件
我想做到的就是輸入的命令內容寫在csv的第一個單元格,返回的所有內容寫在csv的第 二個單元格,樓上的同學寫的比較接近,但是多了幾行的問題如何解決呢?

先謝謝大佬們的回覆
作者: went    时间: 2020-6-11 19:33

回复 6# wqwa
set /p
不过要用for获取最后一行输出,3-4行是测试
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. call :print "dir /b /a-d"
  4. call :print "adb devices"
  5. call :print "set a"
  6. pause&exit
  7. :print
  8. (
  9. set /p="""
  10. set "last="
  11. for /f "delims=" %%i in ('%~1') do (
  12. if not "!last!"=="" echo !last!
  13. set "last=%%i"
  14. )
  15. echo !last!","%~1"
  16. )<nul >>1.csv
复制代码

作者: Batcher    时间: 2020-6-11 22:36

回复 6# wqwa
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set CrLf=^
  4. REM 不要删除上面的空行
  5. for /f "delims=" %%i in ('adb devices 2^>^&1') do (
  6.     set "result=!result!!CrLf!%%i"
  7. )
  8. >"1.csv" echo "!result!","adb devices"
复制代码

作者: wqwa    时间: 2020-6-15 13:34

回复 8# Batcher


    已完美解決,多謝多謝~~~




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