Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables MS DOS IF和%百分比_Variables_If Statement_Parameters_Dos - Fatal编程技术网

Variables MS DOS IF和%百分比

Variables MS DOS IF和%百分比,variables,if-statement,parameters,dos,Variables,If Statement,Parameters,Dos,我已经很久没有做过DOS了,也记不起在标签前面加%的特性了。我正在尝试编写一个脚本(其他人可能也会发现它很有用),将ADB连接到我平板电脑上运行的WiFi服务 @echo off set def=192.168.1.21 if "%1" == "" ( echo.Please supply the IP address of the ADB server/tablet. set /p ip=[%def%] if %ip% == "" ( set ip=%def

我已经很久没有做过DOS了,也记不起在标签前面加%的特性了。我正在尝试编写一个脚本(其他人可能也会发现它很有用),将ADB连接到我平板电脑上运行的WiFi服务

@echo off
set def=192.168.1.21
if "%1" == "" (
    echo.Please supply the IP address of the ADB server/tablet.
    set /p ip=[%def%]
    if %ip% == "" (
      set ip=%def%
    )
) else (
    set ip=%1
    "C:\Program Files\adt-bundle-windows-x86_64-20130219\sdk\platform-tools\adb" connect "%ip":5555
)
脚本应在命令行上接受IP地址,但如果未提供IP地址,则应提示操作员。如果未输入任何内容,则应使用带方括号的打印默认值

它似乎起作用了,除了

set ip=%def%
从不执行。我想我把第二个IF语句搞糟了。我就是找不到正确位置的%符号!!有人记得这个古老的黑魔法吗


谢谢。

如果用户没有输入任何内容,则无需将ip设置为默认值。如果用户在不键入任何内容的情况下按Enter键,则SET/P将保留现有值。因此,您只需在发出set/P之前将该值设置为默认值

如果用户为参数提供引号,然后代码添加其他引号,则可能会出现问题。通常,使用
“%~1”
更安全-波浪线将删除所有现有的引号,然后添加自己的引号。如果参数已被引用或未被引用,则此操作有效

在ELSE语句中设置ip时,可能应该删除任何现有的引号

尝试将ip扩展为adb的参数时缺少%。我怀疑你总是想执行这个命令。当前代码仅在ip作为参数提供时执行该命令

我将按照以下方式构建代码:

@echo off
setlocal
set "def=192.168.1.21"
set "ip=%~1"
if not defined ip (
  set "ip=%def%"
  echo Please supply the IP address of the ADB server/tablet.
  set /p "ip=[%def%] "
)
"C:\Program Files\adt-bundle-windows-x86_64-20130219\sdk\platform-tools\adb" connect "%ip%:5555"

我很怀疑你是在运行MS DOS。DOS是windows之前存在的一种旧操作系统。您可能只是在Windows上使用命令提示符控制台。它看起来像DOS,但不是DOS:)我知道你在说什么。尽管如此,这句话仍然准确:我已经很久没有做过DOS了。这和当年一样。事实上,我有点怀念它。我只是想澄清一下要求:我希望如果用户没有输入命令行参数,他们会被提示输入一个命令行参数,如果没有输入IP,提示会显示默认值。在上面的解决方案集中/p“ip=[%def%]”不会显示默认值,因为它尚未定义。正确的是,该命令需要位于最后一个括号之外。那是“手指问题”@KDM-是的,这是我的意图,但我有一个愚蠢的逻辑错误。现在应该修好了。是的!我应该自己发现的。这是我的+1。谢谢