[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理命令Start为何提示找不到文件?

  1. @echo off
  2. set ADB_CMD="%cd%\tools\adb.exe"
  3. start /b %ADB_CMD% logcat -v threadtime >./logcat_main.log
  4. pause
复制代码
在这个批处理下有个tools文件夹下有个adb.exe
现在我想在当前CMD下启动另一个窗口,去玩成另一件事。抓取手机的log  "adb logcat -v threadtime" 把log输入到当前文件夹下的logcat_main.log文件中。
但是运行命令 提示“window 找不到文件‘logcat‘. 请确件夹是否正确,再试一次........”

我单独在命令行下 运行该文件夹下的adb logcat -v threadtime >./logcat_main.log 是没问题的。但不知道为什么用start 启动另一个窗口却没用。

试试start命令的 /D 参数。
  1. @echo off
  2. set "ADB_CMD_DIR=%cd%\tools"
  3. set "ADB_CMD=adb.exe"
  4. start /b /D"%ADB_CMD_DIR%" "%ADB_CMD%" logcat -v threadtime >./logcat_main.log
  5. pause
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 2# yu2n


   还是不行,还是会提示“找不到logcat”

TOP

start /b "" %ADB_CMD% logcat -v threadtime >logcat_main.log
看看
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 3# 441857769@qq.co
你确定是CMD的start命令的问题?有没有对 ADB_CMD 路径进行测试呢。

常用的测试命令:
对目录(如D:\abc)测试是否存在:
  1. if exist d:\abc (echo 存在) else (echo 不存在)
  2. pushd d:\abc 2>nul&& (echo 存在) || (echo 不存在) & popd
复制代码
对文件(如D:\abc.txt)测试是否存在:
  1. if exist d:\abc.txt (echo 存在) else (echo 不存在)
复制代码
从出错信息看,你的ADB_CMD没有成功设置为你的预期值。
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

应该是 start 把 %ADB_CMD% 当作"title",把logcat当作程序名了。如此,4#应该就可以
另,start /b 不会启动另外一个cmd窗口吧?

TOP

本帖最后由 yu2n 于 2013-7-25 19:07 编辑
应该是 start 把 %ADB_CMD% 当作"title",把logcat当作程序名了。如此,4#应该就可以
另,start /b 不会启 ...
apang 发表于 2013-7-25 18:43
  1. @echo off
  2. set "ADB_CMD=%~dp0tools\adb.exe"
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=1 delims=??" %%a in ('echo,?%ADB_CMD%?') do (
  5.     set wkDir=%%~dpa
  6.     set wkDir=!wkDir:~0,-1!
  7.     set wkApp=%%~nxa
  8. )
  9. setlocal disabledelayedexpansion
  10. @echo on
  11. start "" /D "%wkDir%" "%wkApp%" logcat -v threadtime >./logcat_main.log
  12. @echo off
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

本帖最后由 441857769@qq.co 于 2013-7-25 20:54 编辑

回复 7# yu2n


首先在这里谢谢大神了。    刚验证了下。这个不会弹出找不到logcat了,并且可以运行。但又有一个新的问题  就是弹出框显示当前log信息后 不会将log输出去logcat_maint.log中去。 只是在CMD 中显示。logcat_main.log文件一直是0kb.
我后面又加了一个参数-d 意思是输完log后关闭当前窗口     start "" /D "%wkDir%" "%wkApp%" logcat -d -v threadtime >./logcat_main.log 但还是不能把当前log输出到logcat_main.log中去。

还有一个问题:我看你改了后有几个地方看不懂了 !
1.为什么要用 for 循环 把路径整一下。
for /f "tokens=1 delims=??" %%a in ('echo,?%ADB_CMD%?') do (
    set wkDir=%%~dpa
    set wkDir=!wkDir:~0,-1!
    set wkApp=%%~nxa
)
这个for 循环中 delims=?? 两个问号是什么意思?  按两个问题截取字符 还有后面的 echo,?%ADB_CMD%?也没怎么看懂

2.什么我用 echo 查看 wkDir 的值  在 set wkDir=%%~dpa   set wkDir=!wkDir:~0,-1! 之前都 是空的 在 set wkApp=%%~nxa后就显示当前工作路径了?
还有  其中的 %%~dpa 和 %%~nxa也有点不明白,是把a 扩展到一个驱动器号和路径  这里的扩屏是什么意思?

3.最的一点。 哈哈。看了你的 我还是没明白我之前的是那里错了?

TOP

1. 个人习惯对路径进行处理一下,把路径的文件夹路径、文件名拿出来。两个问号是保证提取到完整路径(降低路径中包含的一些特殊字符的影响)。
2. 输入以下命令,相信你看得懂它的解释。
  1. setlocal enabledelayedexpansion /?
  2. for /?
复制代码
3. 6楼已经说了。
apang:应该是 start 把 %ADB_CMD% 当作"title",把logcat当作程序名了。
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 8# 441857769@qq.co


    日志的输出还是需要cmd环境。

1. 生成临时BAT
  1. @echo off
  2. :: 程序文件
  3. set "adb_app=%~dp0tools\adb.exe"
  4. :: 临时 BAT 文件
  5. set "tmp_bat=%tmp%\logcat_main.log.bat"
  6. :: 日志文件
  7. set "app_log=%~dp0logcat_main.log"
  8. :: 生成临时 BAT 文件("%tmp_bat%")
  9. echo,"%adb_app%" logcat -v threadtime ^>"%app_log%" > "%tmp_bat%"
  10. :: 运行临时 BAT 文件
  11. start "" /wait "%tmp_bat%"
  12. :: 删除临时 BAT 文件
  13. if exist "%tmp_bat%" del /q  "%tmp_bat%"
  14. :: 打开日志
  15. if exist "%app_log%" notepad "%app_log%"
  16. pause
复制代码
2. start 调用 cmd /c
  1. @echo on
  2. set "ADB_CMD=%~dp0tools\adb.exe"
  3. set "logFile=%~dp0logcat_main.log"
  4. rem start "" /wait "cmd" /c %ADB_CMD% /k logcat -v threadtime ^>"%logFile%"
  5. start "" /wait "cmd" /c "%ADB_CMD%" /k logcat -v threadtime ^>"%logFile%"
  6. if exist "%logFile%" notepad "%logFile%"
  7. pause
复制代码
1

评分人数

    • 441857769@qq.co: 感 谢你的讲解,看来我还得努力学习啊。技术 + 1
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

返回列表