我想检查我的Android设备上是否存在文件,如果不存在 - 要推送它。批量使用adb的语法是什么? 类似的东西:
if exist ./sdcard/file.any do echo "exists"
else adb push file.any ./sdcard/
答案 0 :(得分:1)
在命令提示符窗口if /?
或help if
中运行,输出内部命令if的帮助页面。
命令处理器对语法不是很宽容。只有使用括号才能进行else
分支。真正的分支必须(
必须与命令if
在同一行,而第二个比较字符串用空格隔开。
true分支的结束)
可以与打开(
或不同的行位于同一行。
关键字else
必须与空格后关闭真正分支的)
位于同一行。
如果其他分支也使用了圆括号,则打开(
必须与else
位于同一行,并以关键字的空格分隔。
关键字do
在这里完全错误,因为它是命令 FOR 的关键字。
一些工作变体。
一行中的所有内容尽可能少的空间(难以阅读):
if exist "directory\file" (echo exists) else (adb push "file" "directory")
一行中的所有内容都有更多空格,以便于阅读:
if exist "directory\file" ( echo exists ) else ( adb push "file" "directory" )
第一行的条件,第二行的真分支,否则第三行没有括号的分支:
if exist "directory\file" (
echo exists
) else adb push "file" "directory"
整个条件的每个部分都在不同的行上:
if exist "directory\file" (
echo exists
) else (
adb push "file" "directory"
)
可能有更多变种,但阅读起来都很糟糕。
最好使用第二或第四种变体,因为这两种变体最适合阅读。
如果使用了else分支,我建议总是使用第四种变体。
.\
可以省略文件名/目录名的开头。
Windows上的目录分隔符是反斜杠字符。
注意:我不知道if exist ./sdcard/file.any
或.\sdcard\file.any
是否有效。该问题不包含任何有关
PATH
和PATHEXT
的值是什么等。所以答案仅涵盖 IF 语法错误,而不是如何在任何Android设备上检查文件是否存在,任何Android版本与任何设备驱动程序连接,并且数据存储访问协议用于访问设备。
答案 1 :(得分:0)
我知道这有点老了但是如何围绕以下几点:
set cmd="adb shell ls | find /c "theFile" "
FOR /F %%K IN (' !cmd! ') DO SET TEST=%%K
if !TEST! GTR 0 (
echo the file exists
) else (
echo the file does not exist
)
我正在使用这个非常类似的场景,对我有用。以为我会分享。