0

我创建了以下 TcpConn.bat 脚本,该脚本以两秒的间隔从 Android 设备获取打开的 tcp 连接的信息,在 adb shell 中运行。

:startTCP
adb shell cat /proc/net/tcp
timeout /t 2
goto startTCP

在我的 /dev/test/ 文件夹中对此进行测试时,脚本按预期运行并给了我预期的sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode.

但是,当我将它移到我的 /dev/batchFiles/ 文件夹时,它开始运行该文件夹中不同 .bat 脚本的内容(称为adb.bat)。与内容

cd C:\Android\sdk\platform-tools
adb logcat -s Unity PackageManager dalvikvm DEBUG

现在在我的 TcpConn.bat 脚本中,我执行“ adb shell...”,它与“adb.bat”的名称匹配,没有扩展名,所以它似乎调用了这个。

我的问题是,为什么 它会执行该脚本?我不希望它执行脚本,但运行我不是的 adb 命令:

  • 提供完整的文件路径/文件名(这将是 c:/dev/batchFiles/adb.bat),我也没有将它用作像“adb”这样的字符串
  • 我没有按照这里call的解释使用
  • 不使用start

批处理脚本是否总是检查目录中与命令的一部分匹配的文件并运行该文件,即使它没有附加扩展名?如果是这样,有没有办法禁用这种行为?


我知道我可以重命名“adb.bat”文件并完成它。但想知道它为什么会运行。我唯一能与此相关的是“如何在不使用 *.bat 扩展名的情况下运行批处理脚本

4

1 回答 1

0

只要在与您正在执行的目录相同的目录中有一个批处理文件,它就会执行该 adb.bat 文件,因为当您告诉批处理文件时,Windows 命令提示符将首先在当前目录中查找可执行文件执行命令。

至于您的问题的解决方案,我会说如果可能的话,将您的 adb.bat 文件的名称更改为 adbFile.bat 之类的其他名称,这样您就不会在每次需要调用 adb 工具时都调用它从那个特定的目录。

于 2019-03-20T17:45:24.327 回答