windows - .bat 文件意外运行其他 .bat 文件
问题描述
我创建了以下 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 扩展名的情况下运行批处理脚本”
解决方案
只要在与您正在执行的目录相同的目录中有一个批处理文件,它就会执行该 adb.bat 文件,因为当您告诉批处理文件时,Windows 命令提示符将首先在当前目录中查找可执行文件执行命令。
至于您的问题的解决方案,我会说如果可能的话,将您的 adb.bat 文件的名称更改为 adbFile.bat 之类的其他名称,这样您就不会在每次需要调用 adb 工具时都调用它从那个特定的目录。
推荐阅读
- azure - Azure B2C - 使用查询图的 REST API 将声明中的组发送到 SAML SP
- xquery - 我们可以在eclipse中使用xquery吗?
- mapbox - 如何使用loadImage在mapbox中添加svg作为标记?
- mysql - MySQL存储错误的时间戳
- c - C - scanf 对象的参数
- c - 我需要在 fork() 之前 evconnlistener_disable() 吗?
- flutter - 在 VS Code 中为 dart 禁用自动格式化
- javascript - ng-number-picker 组件 Angular8 - 在“mousedown”上计数保持增量并远离微调器按钮
- python - 与 2D numpy 数组进行更快的嵌套行比较
- php - 如何将值放入foreach循环php中的空白数组