我目前正在编写一个批处理文件,它将以脚本语言的格式输出一个纯文本文件,我手机上的应用程序使用该脚本语言来自动执行屏幕触摸。我想做的是创建一个子菜单,当仅选择主菜单中的特定选项时调用该子菜单。所以这是我的批处理文件中的当前版本。我遇到的问题是,当我尝试创建一个子菜单时,我的"is"操作没有执行,它只是返回到主菜单。
这是我目前所拥有的。
:MENU
ECHO.
ECHO ###################################################
ECHO # Select an Option to begin building your script #
ECHO ###################################################
ECHO.
ECHO 1 - START
ECHO 2 - SEARCH
ECHO 3 - X_COORDINATES
ECHO 4 - Y_COORDINATES
ECHO 5 - 1
ECHO 6 - 2
ECHO 7 - 3
ECHO 8 - 4
ECHO 9 - 5
ECHO 10 - 6
ECHO 11 - 7
ECHO 12 - 8
ECHO 13 - 9
ECHO 14 - 0
ECHO 15 - QUIT
ECHO.
SET /P M=TYPE 1-15 THEN PRESS ENTER:
IF %M%==1 GOTO START
IF %M%==2 GOTO SEARCH
IF %M%==3 GOTO X_COORDINATES
IF %M%==4 GOTO Y_COORDINATES
IF %M%==5 GOTO 1
IF %M%==6 GOTO 2
IF %M%==7 GOTO 3
IF %M%==8 GOTO 4
IF %M%==9 GOTO 5
IF %M%==10 GOTO 6
IF %M%==11 GOTO 7
IF %M%==12 GOTO 8
IF %M%==13 GOTO 9
IF %M%==14 GOTO 0
IF %M%==15 GOTO QUIT
下面的代码块是我遇到的问题。选择“Y”时,它不会将 touchPress 0 1315 2451 行或脚本代码的 sleep 590 行打印到我稍后将在应用程序自动从头到尾搜索游戏 map ,而无需手动键入 1200x1200 网格上的任何组合。它只是返回到菜单,就像选择了“N”一样。
(我选择使用 @ECHO OFF 作为子菜单,因为我不想让自己或任何可能使用它来编写自己的搜索脚本的人感到困惑在他们甚至开始使用批处理文件之前的控制台窗口。我只希望在从主菜单中选择某些选项时显示子菜单。)
@ECHO OFF
:SUB-MENU
SET /P M=TYPE Y,N THEN PRESS ENTER:
IF %M%==Y @ECHO touchPress 0 1315 2451>>"C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles\speedSearch.txt"
@ECHO sleep 590>>"C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles\speedSearch.txt"
IF %m%==N GOTO MENU
这只是为了强调批处理文件中的问题 block 。
ECHO.
:START
cd..
cd..
cd C:\Documents and Settings\
cd C:\Documents and Settings\Master Terminal\
cd C:\Documents and Settings\Master Terminal\Desktop\
cd C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles
@echo :start>"C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles\speedSearch.txt"
GOTO :MENU
:SEARCH
@ECHO touchPress 0 493 2148>>"C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles\speedSearch.txt"
@ECHO sleep 590>>speedSearch.txt
GOTO :MENU
:X_COORDINATES
@ECHO touchPress 0 529 1221>>"C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles\speedSearch.txt"
@ECHO sleep 590>>speedSearch.txt
GOTO :MENU
:Y_COORDINATES
@ECHO touchPress 0 1131 1208>>"C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles\speedSearch.txt"
@echo sleep 590>>speedSearch.txt
GOTO :MENU
:1
@ECHO touchPress 0 220 1800>>"C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles\speedSearch.txt"
@ECHO sleep 590>>speedSearch.txt
GOTO :SUB-MENU
非常感谢任何建议。我对这个项目还有一个问题,但我想在进一步挖掘问题之前解决这部分问题。
最佳答案
首先,你可以使用而不是
cd..
cd..
cd C:\Documents and Settings\
cd C:\Documents and Settings\Master Terminal\
cd C:\Documents and Settings\Master Terminal\Desktop\
cd C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles
简单的单行
cd /D "C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles"
甚至更好
cd /D "%USERPROFILE%\Desktop\speedSearchFiles"
如果用户帐户名称是 Master Terminal。
其次,即使您描述了批处理用户应该在提示时输入的内容,批处理用户也始终可以简单地按 RETURN 键而不输入任何内容。因此,最好为这种情况预定义具有默认值的变量。
并且批处理用户还可以输入任何字符串,而不仅仅是您推荐的字符串。因此,还要为任何用户输入准备批处理文件。
@ECHO OFF
:SUB-MENU
SET "M=N"
SET /P "M=TYPE Y,N THEN PRESS ENTER: "
REM Prevent a syntax error if user enters 1 or more double quotes by removing them.
SET "M=%M:"=%"
IF /I "%M%"=="Y" ECHO touchPress 0 1315 2451>>"C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles\speedSearch.txt"
ECHO sleep 590>>"C:\Documents and Settings\Master Terminal\Desktop\speedSearchFiles\speedSearch.txt"
GOTO MENU
y 或 Y 被解释为 YES,其他一切都被解释为 NO。
要了解使用的命令及其工作原理,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
cd/?echo/?goto/?如果/?rem/?设置/?关于windows - 是否可以在 Windows 批处理文件中创建子菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918780/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html
这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife
我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案
我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查
我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/