gpt4 book ai didi

java - 为什么这个批处理文件不启动任何内容

转载 作者:行者123 更新时间:2023-12-02 04:16:15 25 4
gpt4 key购买 nike

我对这个旧程序有问题。我以前有运行良好的linux版本,但由于某种原因我需要windows版本,但它从来没有运行过。虽然它基于 java,但根据软件创建者的说法,只有启动脚本似乎有所不同。
起初,我遇到了一个问题

ECHO -mode       Wise2 running mode [wing|global|both]  

这带来了“'global'不是一个可识别的内部命令或程序”。所以我稍微研究了一下并将其更改为 string 作为管道 |好像效果不太好。

但现在它根本无法启动,而之前最后有一个正在运行的 % 和一些输出文件。我想到了 设置 SHARKHOME=%~p0和 %~dp0 到位,但没有运气。

我改变了类路径硬编码部分中斜杠的方向(\到/因为这就是回显 %sharkhome% 给我的返回值,最后加上斜杠 c:/user/我再次没有运气,但尝试抑制 %sharkhome% 和硬编码目录之间的斜杠(因此 %sharkhome%java 而不是 %sharkhome%/java 或 %sharkhome%\java),但再次没有运气。

我被这个问题困住了。请问为什么这不起作用?

@ECHO OFF

REM #############################
REM SHARKhunt execution script #
REM Windows version 28/2/06 #
REM #############################

SETLOCAL

REM get SHARKHOME from path of batch file
SET SHARKHOME=%~p0

REM # set classpath
SET CLASSPATH=%SHARKHOME%\java\sharkhunt1.0_win32.jar:%SHARKHOME%\java\jdom.jar:%SHARKHOME%\java\jakarta-regexp-1.2.jar

REM ############################################

REM # default directories
SET TMP=%CD%
SET PROFILES="%SHARKHOME%\priam_06_win32"
SET VER="priam_06"
SET BLASTHOME="%SHARKHOME%\blast"
SET WISEHOME="%SHARKHOME%\wise2"
SET OUTPUT=%CD%


REM # default options
SET EUK=true
SET BLASTCUT=1.0
SET LEEWAY=2000
SET MAXREGIONS=5
SET MODE=both
SET FINALCUT=0.1
SET XMX=2048M

REM ############################################


REM # check user options

IF NOT DEFINED %2 GOTO HELP
IF %1 == "-h" GOTO HELP
IF %1 == "--help" GOTO HELP
IF %1 == "-help" GOTO HELP

:LOOP

IF %1 == "-euk" (
SET EUK="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "-blastcut" (
SET BLASTCUT="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "-leeway" (
SET LEEWAY="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "-maxregions" (
SET MAXREGIONS="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "-mode" (
SET MODE="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "-finalcut" (
SET FINALCUT="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "-out" (
SET OUTPUT="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "-tmp" (
SET TMP="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "--profiles" (
SET PROFILES="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "--blasthome"
SET BLASTHOME="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "--wisehome" (
SET WISEHOME="%2"
SHIFT
SHIFT
GOTO LOOP
)
IF %1 == "--Xmx" (
SET XMX="%2"
SHIFT
SHIFT
GOTO LOOP
)

SET DATA=%1
SET GENOME=%2

IF %EUK% == "f" SET EUK=false
IF %EUK% == "F" SET EUK=false
IF %EUK% == "FALSE" SET EUK=false
IF %EUK% == "t" SET EUK=true
IF %EUK% == "T" SET EUK=true
IF %EUK% == "TRUE" SET EUK=true

SET BLASTMAT="%BLASTHOME%\data"

REM # run SharkHunt
START java -Xmx$XMX -cp %CLASSPATH% -Dshark.tempdir=%TMP% -Dshark.eukaryote=%EUK% -Dshark.genomepath=%DATA% -Dshark.profiles=%PROFILES% -Dshark.blasthome=%BLASTHOME% -Dshark.wisehome=%WISEHOME% -Dshark.output=%OUTPUT% -Dshark.maxregions=%MAXREGIONS% -Dshark.wisemode=%MODE% -Dshark.cutoff=%BLASTCUT% -Dshark.maxsig=%FINALCUT% -Dshark.leeway=%LEEWAY% -Dshark.wisemode=%MODE% -Dshark.profiles_version=%VER% sharkhunt.SharkHunt %GENOME%

PAUSE

ENDLOCAL

EXIT

:HELP

ECHO usage: $progname [options] genome_path genome_id
ECHO
ECHO options:
ECHO -euk Eukaryotic genome [T/F]
ECHO " (default=%EUK%)"
ECHO -leeway No. of bases to extract each side of BLAST hit [integer]
ECHO " (default=%LEEWAY%)"
ECHO -blastcut Cutoff E-value for initial BLAST search [real]
ECHO " (default=%BLASTCUT%)"
ECHO -maxregions No. of best BLAST regions to take forward to Wise2 search [integer]
ECHO " (default=%MAXREGIONS%)"
ECHO -mode Wise2 running mode [String]
ECHO " (default=%MODE%)"
ECHO -finalcut Final E-value cutoff [real]
ECHO " (default=%FINALCUT%)"
ECHO -tmp Directory for working files [string]
ECHO " (default=%TMP%)"
ECHO -out Output directory [string]
ECHO " (default=%OUTPUT%)"
ECHO
ECHO advanced options:
ECHO --profiles Specify profile directory [String]
ECHO " (default=%PROFILES%)"
ECHO --blasthome Specify BLAST directory [String]
ECHO " (default=%BLASTHOME%)"
ECHO --wisehome Specify Wise2 directory [String]
ECHO " (default=%WISEHOME%)"
ECHO --Xmx Specify JVM size [String]
ECHO " (default=%XMX%)"

最佳答案

仅一些评论和提示:

  • Escape all cmd poisonous characters使用
    • ^ 一般转义字符:ECHO [wing^|global^|both]
    • "双引号如下:
      设置“PROFILES=%SHARKHOME%\priam_06_win32”
      回显“%PROFILES%”
  • (装饰)echo( 显示空行,而不是 ECHO is off 消息
  • 使用 SET "BLASTMAT=%BLASTHOME%\data",然后使用 -Dshark.blasthome="%BLASTHOME%" 而不是 SET BLASTMAT="% BLASTHOME%\data" 然后 -Dshark.blasthome=%BLASTHOME% (注意并思考双引号位置)
  • 检查参数是否提供给当前脚本而是使用
    IF "%~2"==""GOTO HELP 而不是 IF NOT DEFINED %2 GOTO HELP 因为最后一个符号可能会导致测试变量 %GOTO% 存在:如果没有定义GOTO help,参见if/?
  • 根据 Command Line arguments (Parameters) 更改一些测试和 IF command ,例如 IF/I "%~1"== "-h"GOTO HELP

代码片段示例:

IF /I "%~1" == "-help" GOTO HELP

:LOOP

IF /I "%~1" == "-euk" (
SET "EUK=%~2"
SHIFT
SHIFT
GOTO LOOP
)

另一个代码片段示例(请注意,操作 start command 仅由 echo 显示以用于调试目的;保留 ˙echo˙ 直至调试;另请注意 ""开始“”某事不是一个错误):

SET "DATA=%~1"
SET "GENOME=%~2"

SET "EUK=true"
IF /I "%EUK%" == "f" SET EUK=false
IF /I "%EUK%" == "FALSE" SET EUK=false

SET "BLASTMAT=%BLASTHOME%\data"

REM # run SharkHunt
echo START "" java -Xmx %XMX% -cp %CLASSPATH% -Dshark.tempdir="%TMP%" -Dshark.eukaryote=%EUK% -Dshark.genomepath=%DATA% -Dshark.profiles=%PROFILES% -Dshark.blasthome=%BLASTHOME% -Dshark.wisehome=%WISEHOME% -Dshark.output=%OUTPUT% -Dshark.maxregions=%MAXREGIONS% -Dshark.wisemode=%MODE% -Dshark.cutoff=%BLASTCUT% -Dshark.maxsig=%FINALCUT% -Dshark.leeway=%LEEWAY% -Dshark.wisemode=%MODE% -Dshark.profiles_version=%VER% sharkhunt.SharkHunt %GENOME%

PAUSE

最后,请注意,我的回答仅涉及批处理脚本实践,而不是java!

关于java - 为什么这个批处理文件不启动任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33280312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com