精华内容
下载资源
问答
  • 如何编写批处理文件

    2021-02-10 16:29:54
    文章目录前言一、如何编写批处理文件二、Tomcat中的批处理文件总结 前言 在Windows平台上可以通过批处理文件来启动或关闭一些程序。批处理文件的后缀名必须为bat,可以从Windows Explorer中双击一个批处理文件,也...


    前言

    在Windows平台上可以通过批处理文件来启动或关闭一些程序。批处理文件的后缀名必须为bat,可以从Windows Explorer中双击一个批处理文件,也可以在DOS控制台中键入批处理文件的名字来调用它。调用批处理文件后,文件中的每一行命令都会解释


    一、如何编写批处理文件

    本节将对批处理文件进行介绍,当然本节介绍的内容并不能覆盖所有的内容,重点对rem、if、ehco、goto、label等命令进行介绍。

    • rem
      该命令用于注释,解释器不会执行以rem命令开头的行
    • pause
      该命令用于暂停正在执行的批处理文件,并提示用户按某个键,然后程序会继续执行。如下所示
      在这里插入图片描述
    • echo

    该命令用于在DOS控制台上显示一段文本。例如,下面的命令会在控制台输出"Hello World",然后暂停程序,之所以暂停程序是为了能够使控制台将输出的文本显示出来。

    echo hello world
    pause
    

    如果要显示环境变量的值,需要在环境变量的前后添加%,例如,下面的命令将输出myVar的值:

    echo %myVar%
    

    如果需要输出操作系统的名字,就可以使用如下的命令

    echo %OS%
    
    • echo off

    使用echo off可以防止将批处理文件中的具体命令输出,而只会输出结果,但是echo off命令本身还是会显示出来。
    在这里插入图片描述
    在这里插入图片描述

    • @echo off

    该命令与echo off命令类似,但它会连echo off命令也隐藏起来
    在这里插入图片描述

    • set

    set命令用来设置用户定义或命名的环境变量,在批处理文件中设置的环境变量是临时存储在内存当中的,在批处理文件执行完成后会销毁。
    例如下面的命令创建了一个名为"THE_KING"的环境变量,将其值设置为"Elvis",并输出到控制台上

    set THE_KING=Elvis
    echo %THE_KING%
    pause
    

    在这里插入图片描述

    • label

    使用冒号设置一个标签,然后可以将标签传递给goto命令,这样程序就会跳转到标签指定的位置。下面的语句定义了一个名为end的标签。

    :end
    

    有关标签的更多例子请参见对goto命令的介绍。

    • goto

    goto命令强制批处理文件跳转到指定标签所在的位置继续执行

    @echo off
    echo start
    goto end
    echo I can guarantee this line will not be executed
    :end
    echo End
    pause
    

    在第一行上输出了start之后,批处理文件会执行goto命令,跳转到end标签后的语句继续执行。结果是,跳过第3行内容,没有执行它。
    在这里插入图片描述

    • if

    if用来执行条件测试。有以下3种用法:

    1. 测试变量的值
    2. 测试文件是否存在
    3. 测试错误值

    使用下面的命令格式来测试一个变量的值:
    if variable == value nextcommand
    例如,下面的if语句将会测试变量myVar的值是不是3。如果是,则它在控制台上输出"Corret":

    set myVar=3
    if %myVar%==3 echo Correct
    

    运行上面的命令时,会对变量myVar的值进行判断,并输出Correct。
    在这里插入图片描述
    可以使用下面的命令判断格式来测试文件是否存在

    if exist d:\data\my.txt echo file exits
    

    如果在d:\data目录下存在my.txt文件,则打印file exists.

    • not
      not关键字用于对一条语句取反,例如下面的命令在变量myVar的值不是3的时候输出"Corret"。如果在d:\data目录下不存在my1.txt文件,则打印"file not exits".
    @echo off
    set myVar=2
    if not %myVar%==3 echo Correct
    if not exist d:\data\my1.txt echo file not exits
    

    在这里插入图片描述

    • exist

    当测试文件是否存在时,会使用到if语句和exist命令,在前面已经接触过。

    • 接收参数

    可以给批处理文件传递参数,并使用%1引用第一个参数,%2引用第二个参数,以此类推。
    例如,下面的命令会在控制台输出第一个参数的值

    echo %1
    

    如果批处理文件的名字为test.bat,并使用"test Hello"命令来调用它,那么控制台会输出Hello.
    下面的批处理文件会对第一个参数的值进行检查,如果第一个参数的值是start,它就会输出"Starting application";如果第一个参数的值是"stop",就输出"Stopping application";否则输出"Invalid parameter";

    @echo off
    if %1==start goto start
    
    if %1==stop goto stop
    
    goto invalid
    
    :start
    echo Starting application
    goto end
    
    :stop
    echo Stopping application
    goto end
    
    :invalid
    echo Invalid parameter %1
    
    :end
    

    在这里插入图片描述
    若要检查运行批处理文件是否附带参数,可以将"%1"与空字符串进行比较。例如,对于下面的批处理文件,如果运行时没有使用参数,就会在控制台输出"No parameter":

    if "%1"=="" echo No parameter
    

    if ""%1""=="""" echo No parameter
    
    • shift

    shift命令用于将参数索引向后移动一位。即将%2的值复制给%1,%3的值复制给%2,以此类推。例如,下面的代码使用一条shift命令:

    @echo off
    shift
    echo %1
    echo %2
    

    如果在运行批处理文件时,附加了3个参数a、b、c,那么上面的命令会有如下输出:
    b
    c
    在这里插入图片描述
    移动之后,要使用%0来引用第1个参数,而现在最后一个参数则失效了。

    • call

    call命令用于调用另一条命令。

    • setLocal

    在批处理文件中使用setlocal对环境命令的修改只是在当前批处理脚本中有效。当遇到endLocal命令后,在批处理文件中修改的环境变量的值会恢复成原来的值。

    • start

    打开一个新的Windows控制台,并可以为这个新的控制台指定一个名字,例如start “Title”。此外,在"Title"后面,还可以传入一条将要在新的控制台中执行的命令,如下所示

    @echo off
    start "Title" echo Hello World
    

    二、Tomcat中的批处理文件

    catalina.bat批处理文件用来启动和关闭Tomcat,另外两个文件(startup.bat和shutdown.bat)提供了更简单的启动和关闭Tomcat的方法。实际上,startup.bat和shutdown.bat都会调用catalina.bat文件,并传入相应的参数。
    在%CATALINA_HOME%/bin目录下,需要以下面的语法格式调用catalina.bat脚本:

    catalina
    

    以下为catalina.bat批处理文件的内容

    @echo off
    rem Licensed to the Apache Software Foundation (ASF) under one or more
    rem contributor license agreements.  See the NOTICE file distributed with
    rem this work for additional information regarding copyright ownership.
    rem The ASF licenses this file to You under the Apache License, Version 2.0
    rem (the "License"); you may not use this file except in compliance with
    rem the License.  You may obtain a copy of the License at
    rem
    rem     http://www.apache.org/licenses/LICENSE-2.0
    rem
    rem Unless required by applicable law or agreed to in writing, software
    rem distributed under the License is distributed on an "AS IS" BASIS,
    rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    rem See the License for the specific language governing permissions and
    rem limitations under the License.
    
    rem ---------------------------------------------------------------------------
    rem Start/Stop Script for the CATALINA Server
    rem
    rem Environment Variable Prerequisites
    rem
    rem   Do not set the variables in this script. Instead put them into a script
    rem   setenv.bat in CATALINA_BASE/bin to keep your customizations separate.
    rem
    rem   WHEN RUNNING TOMCAT AS A WINDOWS SERVICE:
    rem   Note that the environment variables that affect the behavior of this
    rem   script will have no effect at all on Windows Services. As such, any
    rem   local customizations made in a CATALINA_BASE/bin/setenv.bat script
    rem   will also have no effect on Tomcat when launched as a Windows Service.
    rem   The configuration that controls Windows Services is stored in the Windows
    rem   Registry, and is most conveniently maintained using the "tomcatXw.exe"
    rem   maintenance utility, where "X" is the major version of Tomcat you are
    rem   running.
    rem
    rem   CATALINA_HOME   May point at your Catalina "build" directory.
    rem
    rem   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions
    rem                   of a Catalina installation.  If not present, resolves to
    rem                   the same directory that CATALINA_HOME points to.
    rem
    rem   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
    rem                   "run" or "debug" command is executed.
    rem                   Include here and not in JAVA_OPTS all options, that should
    rem                   only be used by Tomcat itself, not by the stop process,
    rem                   the version command etc.
    rem                   Examples are heap size, GC logging, JMX ports etc.
    rem
    rem   CATALINA_TMPDIR (Optional) Directory path location of temporary directory
    rem                   the JVM should use (java.io.tmpdir).  Defaults to
    rem                   %CATALINA_BASE%\temp.
    rem
    rem   JAVA_HOME       Must point at your Java Development Kit installation.
    rem                   Required to run the with the "debug" argument.
    rem
    rem   JRE_HOME        Must point at your Java Runtime installation.
    rem                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
    rem                   are both set, JRE_HOME is used.
    rem
    rem   JAVA_OPTS       (Optional) Java runtime options used when any command
    rem                   is executed.
    rem                   Include here and not in CATALINA_OPTS all options, that
    rem                   should be used by Tomcat and also by the stop process,
    rem                   the version command etc.
    rem                   Most options should go into CATALINA_OPTS.
    rem
    rem   JPDA_TRANSPORT  (Optional) JPDA transport used when the "jpda start"
    rem                   command is executed. The default is "dt_socket".
    rem
    rem   JPDA_ADDRESS    (Optional) Java runtime options used when the "jpda start"
    rem                   command is executed. The default is localhost:8000.
    rem
    rem   JPDA_SUSPEND    (Optional) Java runtime options used when the "jpda start"
    rem                   command is executed. Specifies whether JVM should suspend
    rem                   execution immediately after startup. Default is "n".
    rem
    rem   JPDA_OPTS       (Optional) Java runtime options used when the "jpda start"
    rem                   command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,
    rem                   and JPDA_SUSPEND are ignored. Thus, all required jpda
    rem                   options MUST be specified. The default is:
    rem
    rem                   -agentlib:jdwp=transport=%JPDA_TRANSPORT%,
    rem                       address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
    rem
    rem   JSSE_OPTS       (Optional) Java runtime options used to control the TLS
    rem                   implementation when JSSE is used. Default is:
    rem                   "-Djdk.tls.ephemeralDHKeySize=2048"
    rem
    rem   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file
    rem                   Example (all one line)
    rem                   set LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties"
    rem
    rem   LOGGING_MANAGER (Optional) Override Tomcat's logging manager
    rem                   Example (all one line)
    rem                   set LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
    rem
    rem   TITLE           (Optional) Specify the title of Tomcat window. The default
    rem                   TITLE is Tomcat if it's not specified.
    rem                   Example (all one line)
    rem                   set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]
    rem ---------------------------------------------------------------------------
    
    rem 在批处理文件中使用setlocal对环境变量的修改只在当前批处理脚本中有效。当遇到endlocal命令后,在批处理文件的末尾修改的环境变量的值会恢复成原来的值
    setlocal
    
    rem Suppress Terminate batch job on CTRL+C
    if not ""%1"" == ""run"" goto mainEntry
    if "%TEMP%" == "" goto mainEntry
    if exist "%TEMP%\%~nx0.run" goto mainEntry
    echo Y>"%TEMP%\%~nx0.run"
    if not exist "%TEMP%\%~nx0.run" goto mainEntry
    echo Y>"%TEMP%\%~nx0.Y"
    call "%~f0" %* <"%TEMP%\%~nx0.Y"
    rem Use provided errorlevel
    set RETVAL=%ERRORLEVEL%
    del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1
    exit /B %RETVAL%
    :mainEntry
    del /Q "%TEMP%\%~nx0.run" >NUL 2>&1
    
    rem Guess CATALINA_HOME if not defined
    rem 获取当前目录
    set "CURRENT_DIR=%cd%"
    if not "%CATALINA_HOME%" == "" goto gotHome
    set "CATALINA_HOME=%CURRENT_DIR%"
    rem 假设当前目录是CATALINA_HOME,如果当前目录下存在bin目录而且目录下存在catalina.bat文件的话,那么猜测是正确的
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    rem 如果不存在对应文件 那么猜测是错误 进入上一个目录 重新设置
    cd ..
    set "CATALINA_HOME=%cd%"
    cd "%CURRENT_DIR%"
    :gotHome
    
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    rem 如果猜测都失败了 输出错误消息 告诉用户CATALINA_HOME变量设置错误并调转到end标签所在的位置
    echo The CATALINA_HOME environment variable is not defined correctly
    echo This environment variable is needed to run this program
    goto end
    :okHome
    
    rem Copy CATALINA_BASE from CATALINA_HOME if not defined
    if not "%CATALINA_BASE%" == "" goto gotBase
    set "CATALINA_BASE=%CATALINA_HOME%"
    :gotBase
    
    rem Ensure that neither CATALINA_HOME nor CATALINA_BASE contains a semi-colon
    rem as this is used as the separator in the classpath and Java provides no
    rem mechanism for escaping if the same character appears in the path. Check this
    rem by replacing all occurrences of ';' with '' and checking that neither
    rem CATALINA_HOME nor CATALINA_BASE have changed
    if "%CATALINA_HOME%" == "%CATALINA_HOME:;=%" goto homeNoSemicolon
    echo Using CATALINA_HOME:   "%CATALINA_HOME%"
    echo Unable to start as CATALINA_HOME contains a semicolon (;) character
    goto end
    :homeNoSemicolon
    
    if "%CATALINA_BASE%" == "%CATALINA_BASE:;=%" goto baseNoSemicolon
    echo Using CATALINA_BASE:   "%CATALINA_BASE%"
    echo Unable to start as CATALINA_BASE contains a semicolon (;) character
    goto end
    :baseNoSemicolon
    
    rem Ensure that any user defined CLASSPATH variables are not used on startup,
    rem but allow them to be specified in setenv.bat, in rare case when it is needed.
    set CLASSPATH=
    
    rem Get standard environment variables
    if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome
    call "%CATALINA_BASE%\bin\setenv.bat"
    goto setenvDone
    :checkSetenvHome
    if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
    :setenvDone
    
    rem Get standard Java environment variables
    if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
    echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"
    echo This file is needed to run this program
    goto end
    :okSetclasspath
    rem 执行指定的脚本
    call "%CATALINA_HOME%\bin\setclasspath.bat" %1
    if errorlevel 1 goto end
    
    rem Add on extra jar file to CLASSPATH
    rem Note that there are no quotes as we do not want to introduce random
    rem quotes into the CLASSPATH
    if "%CLASSPATH%" == "" goto emptyClasspath
    set "CLASSPATH=%CLASSPATH%;"
    :emptyClasspath
    set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"
    
    if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir
    set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"
    :gotTmpdir
    
    rem Add tomcat-juli.jar to classpath
    rem tomcat-juli.jar can be over-ridden per instance
    if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome
    set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar"
    goto juliClasspathDone
    :juliClasspathHome
    set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar"
    :juliClasspathDone
    
    if not "%JSSE_OPTS%" == "" goto gotJsseOpts
    set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
    :gotJsseOpts
    set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"
    
    rem Register custom URL handlers
    rem Do this here so custom URL handles (specifically 'war:...') can be used in the security policy
    set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
    
    if not "%LOGGING_CONFIG%" == "" goto noJuliConfig
    set LOGGING_CONFIG=-Dnop
    if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig
    set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"
    :noJuliConfig
    
    if not "%LOGGING_MANAGER%" == "" goto noJuliManager
    set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
    :noJuliManager
    
    rem Configure JAVA 9 specific start-up parameters
    set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.lang=ALL-UNNAMED"
    set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"
    
    rem ----- Execute The Requested Command ---------------------------------------
    
    echo Using CATALINA_BASE:   "%CATALINA_BASE%"
    echo Using CATALINA_HOME:   "%CATALINA_HOME%"
    echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
    if ""%1"" == ""debug"" goto use_jdk
    echo Using JRE_HOME:        "%JRE_HOME%"
    goto java_dir_displayed
    :use_jdk
    echo Using JAVA_HOME:       "%JAVA_HOME%"
    :java_dir_displayed
    echo Using CLASSPATH:       "%CLASSPATH%"
    
    
    rem _RUNJAVA这个变量是在setclasspath.bat脚本中定义的 其实就是执行java.exe程序
    set _EXECJAVA=%_RUNJAVA%
    set MAINCLASS=org.apache.catalina.startup.Bootstrap
    set ACTION=start
    set SECURITY_POLICY_FILE=
    set DEBUG_OPTS=
    set JPDA=
    
    rem 检查传入的第一个参数是否为jpda(Java Platform Debugger Architecture Java平台调试器架构)而使用 如果是的话 则设置变量的值
    if not ""%1"" == ""jpda"" goto noJpda
    set JPDA=jpda
    if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
    set JPDA_TRANSPORT=dt_socket
    :gotJpdaTransport
    if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
    set JPDA_ADDRESS=localhost:8000
    :gotJpdaAddress
    if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend
    set JPDA_SUSPEND=n
    :gotJpdaSuspend
    if not "%JPDA_OPTS%" == "" goto gotJpdaOpts
    set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
    :gotJpdaOpts
    shift
    :noJpda
    rem 大多数情况下 不需要使用JPDA,因此第一个参数比如是以下几个值之一:debug、embeded、run、start、stop
    
    if ""%1"" == ""debug"" goto doDebug
    if ""%1"" == ""run"" goto doRun
    if ""%1"" == ""start"" goto doStart
    if ""%1"" == ""stop"" goto doStop
    if ""%1"" == ""configtest"" goto doConfigTest
    if ""%1"" == ""version"" goto doVersion
    
    rem 如果第1个参数不正确,或者没有使用参数,批处理文件会输出如下使用说明并退出
    echo Usage:  catalina ( commands ... )
    echo commands:
    echo   debug             Start Catalina in a debugger
    echo   debug -security   Debug Catalina with a security manager
    echo   jpda start        Start Catalina under JPDA debugger
    echo   run               Start Catalina in the current window
    echo   run -security     Start in the current window with security manager
    echo   start             Start Catalina in a separate window
    echo   start -security   Start in a separate window with security manager
    echo   stop              Stop Catalina
    echo   configtest        Run a basic syntax check on server.xml
    echo   version           What version of tomcat are you running?
    goto end
    
    :doDebug
    shift
    set _EXECJAVA=%_RUNJDB%
    set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java"
    if not ""%1"" == ""-security"" goto execCmd
    shift
    echo Using Security Manager
    set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
    goto execCmd
    
    :doRun
    shift
    if not ""%1"" == ""-security"" goto execCmd
    shift
    echo Using Security Manager
    set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
    goto execCmd
    
    :doStart
    shift
    if "%TITLE%" == "" set TITLE=Tomcat
    set _EXECJAVA=start "%TITLE%" %_RUNJAVA%
    if not ""%1"" == ""-security"" goto execCmd
    shift
    echo Using Security Manager
    set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
    goto execCmd
    
    :doStop
    shift
    set ACTION=stop
    set CATALINA_OPTS=
    goto execCmd
    
    :doConfigTest
    shift
    set ACTION=configtest
    set CATALINA_OPTS=
    goto execCmd
    
    :doVersion
    %_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo
    goto end
    
    
    :execCmd
    rem Get remaining unshifted command line arguments and save them in the
    set CMD_LINE_ARGS=
    :setArgs
    if ""%1""=="""" goto doneSetArgs
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
    shift
    goto setArgs
    :doneSetArgs
    
    rem Execute Java with the applicable properties
    if not "%JPDA%" == "" goto doJpda
    if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
    %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
    goto end
    :doSecurity
    %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
    goto end
    :doJpda
    if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda
    %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
    goto end
    :doSecurityJpda
    %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
    goto end
    
    :end
    
    

    总结

    为了让用户使用方便,Tomcat附带了批处理文件和Shell脚本,可以方便地启动或关闭servlet容器。在这些批处理文件和shell脚本的帮助下,用户无须为了执行Bootstrap类而记下java.exe程序的选项。相反,用户只需要运行相应的批处理文件或者shell脚本即可。

    展开全文
  • 简明批处理教程22009年10月20日 星期二 下午 05:35 最近对于批处理技术的探讨比较热,也有不少好的批处理程序发布,但是如果没有一定的相关知识恐怕不容易看懂和理解这些批处理文件,也就更谈不上自己动手编写了,古...
  • @echooffsetlocalset test_script=.pyexe.pyremLet's create temporary Python script which prints info we needecho from __future__ import print_function; import sys; print(sys.executable);...

    @echooff

    setlocal

    set test_script=.pyexe.py

    remLet's create temporary Python script which prints info we need

    echo from __future__ import print_function; import sys; print(sys.executable); print(sys.version) > %test_script%

    echo Python accessible through the system PATH:

    python %test_script%

    echo ---

    echo Python set as a handler for Python files:

    rem We need to check if a handler set in the registry exists to prevent "Open With"

    rem dialog box in case it doesn't exist

    rem ftypePython.Filehypotheticalreturnvalue:remPython.File="%PYTHON_HOME%\python.exe""%1"%*for/f"tokens=2 delims=="%%iin('ftype Python.File')doset reg_entry=%%i

    rem...nowin'reg_entry'variable we have everything after equal sign:rem"%PYTHON_HOME%\python.exe""%1"%*set"handler="setlocal enableDelayedExpansionfor%%Ain(!reg_entry!)doifnotdefined handler endlocal&set handler=%%A

    rem...nowin'handler'variable we have the first token:rem"%PYTHON_HOME%\python.exe"remNowwe expand any environment variables that might be present

    reminthe handler's path

    for /f "delims=" %%i in ('echo%handler%') do set expanded_handler=%%i

    if exist "!expanded_handler!" (

    "%test_script%"

    ) else (

    if not "!handler!" == "!expanded_handler!" (

    set "handler=!expanded_handler! ^(!handler!^)"

    )

    echo Handler is set to !handler! which does not exist

    )

    del %test_script%

    展开全文
  • 如何编写批处理文件 批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务。 用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单,但难点在于确保一切按...

    如何编写批处理文件

    批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务。

    用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单,但难点在于确保一切按顺序执行。编写严谨的批处理文件可以极大程度地节省时间,在应对重复性工作时尤其有效。

    步骤

    注意:Linux 系统下的解决方案为 shell 脚本,而非批处理文件。想要了解如何在 Linux 系统下编写 shell 脚本,请参阅这份指南。

     

    1.打开记事本程序

    记事本程序可用来以文本文件格式编写代码,并将写好的代码以批处理文件格式保存。单击“开始”→“应用程序”→“记事本”,或在运行对话框中输入 notepad 打开程序。
     

    2.学习一些基本的批处理命令

     

    批处理文件需要运行一系列 DOS 命令,因此批处理文件的命令与 DOS 命令较为相似。以下是一些较为重要的命令:
    •ECHO ---------------------------- 隐藏通常显示的文字
    • @ECHO OFF ------------------ 用默认程序打开一个文件
    • START --------------------------- 用默认程序打开一个文件
    • REM ------------------------------ 在程序中插入一个注释行
    • MKDIR/RMDIR ---------------- 创建/删除目录
    • DEL - -----------------------------删除一个或多个文件
    • COPY ---------------------------- 复制一个或多个文件
    • XCOPY ---------------------------为复制文件添加更多选项
    • FOR/IN/DO - --------------------对文件进行说明
    • TITLE - ---------------------------编辑窗口标题

    3.编写程序以创建目录

    学习创建批处理文件的一个简单方法,便是首先专注于完成一项基本任务。例如,可以利用批处理文件快速创建多个目录:
    "
    MKDIR f:\example1
    MKDIR f:\example2
    "

    4.保存文件

    输入代码后,便可将文件以批处理文件类型保存。点击“文件”→“另存为”。在下拉菜单中点击“保存类型”,选择“所有文件”,为程序输入一个名字,以 .bat 或 .cmd 格式结尾。
    最后,为选择编码类型为ANSI,然后保存文件。

    5编写基础备份程序

    批处理文件非常适合运行多个命令,若配置其运行多次则效果更佳。通过 XCOPY 命令,用户可以创建一个批处理文件,从选定文件夹中复制文件至备份文件夹,且仅会覆盖最近一次复制时更新的文件。
    "
    @ECHO OFF 
    XCOPY c:\original c:\backupfolder /m /e /y
    "
    这将把original文件夹中的文件复制到backupfolder文件夹中。用户也可将其替换为任意路径。

    /m代表仅复制更新过的文件/e代表列出目录中的所有子目录都会被拷贝/y代表每次文件被覆盖,屏幕上都将出现确认信息

    6.保存文件

    输入代码后,便可将文件以批处理文件类型保存。点击“文件”→“另存为”。
    • 在下拉菜单中点击“保存类型”。
    • 选择“全部文件”。
    • 为程序输入一个名字,以.bat或.cmd格式结尾。

    7编写高级备份程序

     

    把文件从一个文件夹复制到另一个当中固然不错,但如果要同时将文件分门别类,便需要 FOR/IN/DO 命令。这个命令可以用来通过扩展判断文件去向。
    "
    @ECHO OFF 
    cd c:\source
    REM 这是你想要排序的文件目录
    FOR %%f IN (*.doc *.txt) DO XCOPY c:\source\"%%f" c:\text /m /y
    REM 这行命令会把所有的.doc文件从c:\source移动到c:\text
    REM %%f 是一个变量
    FOR %%f IN (*.jpg *.png *.bmp) DO XCOPY C:\source\"%%f" c:\images /m /y
    REM 这行代码会把所有的.jpg .png .bmp图片文件从c:\source移动到c:\images
    "

    8保存文件

     

    输入代码后,便可将文件以批处理文件类型保存。点击“文件”→“另存为”,
    • 在下拉菜单中点击“保存类型”。
    • 选择“全部文件”。
    • 为程序输入一个名字,以.bat或.cmd格式结尾
     

    小提示

    • 如果你的文件路径里包含空格,记得使用引号,例如"C:\Documents and Settings\"。
    • 在Windows 2000或之后的系统中,批处理文件也可能是.cmd格式的。它们在执行的时候并无不同,只不过.cmd文件采用32数位执行,而.bat文件采用16数位。
    • 你可以试着用一些第三方编辑器来编辑批处理文件,例如 UltraEdit。不过对简单的文件来说,自己直接写反而更省时间。

    展开全文
  • 如何编写批处理文件 批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务。 用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单,但难点在于确保...

    第一、Windows bat 批处理文件 编写

    如何编写批处理文件

    批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务

    用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单,但难点在于确保一切按顺序执行。编写严谨的批处理文件可以极大程度地节省时间,在应对重复性工作时尤其有效。

    步骤

    注意:Linux 系统下的解决方案为 shell 脚本,而非批处理文件。想要了解如何在 Linux 系统下编写 shell 脚本,请参阅这份指南。

     

    1.打开记事本程序

    记事本程序可用来以文本文件格式编写代码,并将写好的代码以批处理文件格式保存。单击“开始”→“应用程序”→“记事本”,或在运行对话框中输入 notepad 打开程序。

    2.学习一些基本的批处理命令

     

    批处理文件需要运行一系列 DOS 命令,因此批处理文件的命令与 DOS 命令较为相似。以下是一些较为重要的命令:
    •ECHO ---------------------------- 隐藏通常显示的文字
    • @ECHO OFF ------------------ 用默认程序打开一个文件
    • START --------------------------- 用默认程序打开一个文件
    • REM ------------------------------ 在程序中插入一个注释行
    • MKDIR/RMDIR ---------------- 创建/删除目录
    • DEL - -----------------------------删除一个或多个文件
    • COPY ---------------------------- 复制一个或多个文件
    • XCOPY ---------------------------为复制文件添加更多选项
    • FOR/IN/DO - --------------------对文件进行说明
    • TITLE - ---------------------------编辑窗口标题

    3.编写程序以创建目录

    学习创建批处理文件的一个简单方法,便是首先专注于完成一项基本任务。例如,可以利用批处理文件快速创建多个目录:
    "
    MKDIR f:\example1
    MKDIR f:\example2
    "

    4.保存文件

    输入代码后,便可将文件以批处理文件类型保存。点击“文件”→“另存为”。在下拉菜单中点击“保存类型”,选择“所有文件”,为程序输入一个名字,以 .bat 或 .cmd 格式结尾。
    最后,为选择编码类型为ANSI,然后保存文件。

    5编写基础备份程序

    批处理文件非常适合运行多个命令,若配置其运行多次则效果更佳。通过 XCOPY 命令,用户可以创建一个批处理文件,从选定文件夹中复制文件至备份文件夹,且仅会覆盖最近一次复制时更新的文件。
    "
    @ECHO OFF 
    XCOPY c:\original c:\backupfolder /m /e /y
    "
    这将把original文件夹中的文件复制到backupfolder文件夹中。用户也可将其替换为任意路径。

    /m代表仅复制更新过的文件,/e代表列出目录中的所有子目录都会被拷贝,/y代表每次文件被覆盖,屏幕上都将出现确认信息

    6.保存文件

    输入代码后,便可将文件以批处理文件类型保存。点击“文件”→“另存为”。
    • 在下拉菜单中点击“保存类型”。
    • 选择“全部文件”。
    • 为程序输入一个名字,以.bat或.cmd格式结尾。

    7编写高级备份程序

     

    把文件从一个文件夹复制到另一个当中固然不错,但如果要同时将文件分门别类,便需要 FOR/IN/DO 命令。这个命令可以用来通过扩展判断文件去向。
    "
    @ECHO OFF 
    cd c:\source
    REM 这是你想要排序的文件目录
    FOR %%f IN (*.doc *.txt) DO XCOPY c:\source\"%%f" c:\text /m /y
    REM 这行命令会把所有的.doc文件从c:\source移动到c:\text
    REM %%f 是一个变量
    FOR %%f IN (*.jpg *.png *.bmp) DO XCOPY C:\source\"%%f" c:\images /m /y
    REM 这行代码会把所有的.jpg .png .bmp图片文件从c:\source移动到c:\images
    "

    8保存文件

     

    输入代码后,便可将文件以批处理文件类型保存。点击“文件”→“另存为”,
    • 在下拉菜单中点击“保存类型”。
    • 选择“全部文件”。
    • 为程序输入一个名字,以.bat或.cmd格式结尾

    小提示

    • 如果你的文件路径里包含空格,记得使用引号,例如"C:\Documents and Settings\"。
    • 在Windows 2000或之后的系统中,批处理文件也可能是.cmd格式的。它们在执行的时候并无不同,只不过.cmd文件采用32数位执行,而.bat文件采用16数位。
    • 你可以试着用一些第三方编辑器来编辑批处理文件,例如 UltraEdit。不过对简单的文件来说,自己直接写反而更省时间。
     
    原文链接:https://blog.csdn.net/shufac/article/details/51938888
     
    第二、批处理文件 打包zip

    指令的结构: 

    用法:     rar <命令> -<开关 1> -<开关 N> <压缩文件> <文件...>               <@列表文件...> <解压路径\> 

    例如:

    rar a -df %filename%.rar %filename%.dmp

    表示的是,将某个dmp文件打包为rar.

    参数说明:    

          a    添加文件到压缩文件中    

          -k   锁定压缩文件    

          -s   产生固体存档,这样可以增大压缩比    

          -r   包括子目录    

          -m1 设置压缩比       

          -m0   存储      添加到压缩文件时不压缩文件。       

          -m1   最快      使用最快方式(低压缩)       

          -m2   较快      使用快速压缩方式       

          -m3   标准      使用标准(默认)压缩方式       

          -m4   较好      使用较好压缩方式(较好压缩,但是慢)       

          -m5   最好      使用最大压缩方式(最好的压缩,但是最慢)       

          -ep  从名称中排除路径       

          -ep1从名称中排除基本目录  我用它来压缩只是最终目录中的文件,在解压 

                 后不包括E:\wwwroot\Web\ 这样的路径.

     

    REM 打包zip
    @ECHO OFF
    set year=%date:~0,4%
    set month=%date:~5,2%
    set day=%date:~8,2%
     ::set hour=%time:~0,2%
     ::set min=%time:~3,2%
    set curdate=%year%%month%%day%%hour%%min%
    "D:\Softs\WinRAR\Rar.exe" a -r -s -ml dabao.zip_%curdate%.zip .\aaa\*

    REM 这是WinRARRar.exe,   .\aaa\* 是批处理文件所在的目录下的aaa文件下面的所有文件,

     "D:\Softs\Haozip\Haozip.exe" a -r -s -ml dabao.zip_%curdate%.zip .\aaa\*

    REM 这是haozip

     

    注意事项:

    缩的时候最好在命名中加上时间,免得多次打包文件覆盖。

    转载于:https://www.cnblogs.com/1175429393wljblog/p/8743219.html

    展开全文
  • 批处理的介绍 扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你...
  • 如何编写批处理指令

    2010-09-06 16:27:00
    扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 <br /> 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样)...
  • 我在使用哈工大分词LTP二进制版本 命令如下 ltp_test --input C:\Users\admin\Desktop\test2.txt --segmentor-lexicon C:\Users\admin\Desktop\...我想编写一个批处理来运行 应该怎么编写呢? 求教大神 感激
  • 批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个...
  • 如何通过命令行的方式编译.Net工程? 答: 使用随Visual Studio一块安装的devenv.com,再加上参数可以对.Net进行编译,如下 c:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv....
  • 如何批处理文件

    千次阅读 2019-06-27 00:19:37
    攻略[致谢] 本攻略摘自黄晓菲在cgsp论坛的一篇帖子...无声命令编写bat或者cmd时,在命令的前面加上"@"符号,命令行就不会回显在屏幕上,使用echo off也可以达到同样的效果,一般习惯上编写bat或者cmd时,第一行都是@...
  • ftp下载文件超时处理If you are writing a batch file and you don’t want to continue until somebody presses a key, ... 如果您正在编写批处理文件,并且您不想在有人按下某个键之前继续操作,则可以使用timeo...
  • 1.百度百科:批处理http://baike.baidu.com/view/80110.htm2.百度百科:批处理文件http://baike.baidu.com/view/295769.htm3.百度知道:如何编写批处理文件http://zhidao.baidu.com/question/159949424.批处理文件的...
  • 如何编写bat批处理,批量操作使重复的工作一步到位(二)bat文件的编写使用bat文件帮我达到什么效果使用的批处理命令 上面介绍了如何建立、修改和使用bat批处理文件。现在我举一个实用的例子来为大家简单介绍,在...
  • 如何编写bat批处理,批量操作使重复的工作一步到位什么是bat文件二级目录三级目录 什么是bat文件 二级目录 三级目录
  • 我们在做Redis集群练习的时候,没必要说一个一个的去执行启动的操作,可以编写一个批处理文件编写完成后,这个文件还不能够运行。因为没有可执行权限,这个时候就需要我们执行如下的操作。 然后我们...
  • 3.如何编写批处理文件?4.批处理文件的工作平台。5.批处理文件的应用。 1.什么是批处理文件?批处理文件的作用是什么?批处理文件(Batch File,简称 BAT文件)是一种在DOS 下最常用的可执行文件
  • 日常开发过程中,经常会用到一些adb的指令 比如从手机存储中pull一个log文件到pc,虽然代码不多,但毕竟懒才是推动程序员进步的源泉,我将cmd指令 adb pull /sdcard/xx.log D:/Temp/ 写成批处理文件  @echo off  ...
  • 很多人说病毒清除掉后留下很多尸体文件,...还比如病毒经常在你的硬盘跟目录下放上属性为系统+隐藏的autorun.inf,以及这个文件里run=字段后面的程序,数不胜数…… 那么如何来干掉这些垃圾?实际上你可以利用搜索功能
  • 批处理文件

    2017-09-18 16:29:37
    bat处理文件: ...如何编写bat处理文件呢? 编写一个自定义的文本文件,然后把后缀名改成bat即可 然后把你所要执行的命令写在bat处理文件中即可   bat处理文件常用的命令:  Echo 向控制台输出指定的内容
  • 因此,为了找到解决方案,我提出了以下问题: 原始批处理文件的改进版本现在如下所示: 解决方案1b ^{pr2}$ 这是另一个避免上述两个问题的方法: 解决方案2@echo off setlocal echo Python accessible through the ...
  • 动化效果演示:将下面示例的内容保存为 .BAT 文件:::模拟进度条效果示例1:@echo off&color2f&title 本程序仅用于“模拟进度条效果”的演示-寒夜孤星【初学者】echo.echo.set hanye=───────for /L %...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 246
精华内容 98
关键字:

如何编写批处理文件