ID와 비밀번호를 파일에 하드코딩하지 않고 실행할 때 배치 파일에 전달해야 합니다.
명령줄은 다음과 같습니다:
test.cmd admin P@55w0rd > test-log.txt
또 다른 유용한 팁은 %*
를 사용하여 모두
를 의미하는 것입니다. 예를 들어
echo off
set arg1=%1
set arg2=%2
shift
shift
fake-command /u %arg1% /p %arg2% %*
실행할 때:
test-command admin password foo bar
를 실행하면 위의 배치 파일이 실행됩니다:
fake-command /u admin /p password admin password foo bar
구문이 약간 틀렸을 수도 있지만 이것이 일반적인 아이디어입니다.
%1% 로, 2, 간단한 배치처리 매개변수입니다 액세스하면 수 있습니다. 또한 9%, 또는 %* 경우에 한해 컨텐트에서 간단하다.
간단한 방법은 없다. ',' 등 콘텐츠 등 복잡한 " & ". ^ # 39 의 것이 아니라, & it& 액세스하려면 1% 없이 오류가 있다.
set var=%1
set "var=%1"
set var=%~1
set "var=%~1"
줄 수 있는 확장하십시오
set var="&"&
set "var="&"&"
set var="&"&
set "var="&"&"
및 각 행은 실패하면 ',' 중 하나로 & 따옴표 밖에 있습니다.
이를 통해 충분히 해결할 수 있는 판독값 임시 파일링하는 버전의 매개변수입니다.
@echo off
SETLOCAL DisableDelayedExpansion
SETLOCAL
for %%a in (1) do (
set "prompt="
echo on
for %%b in (1) do rem * #%1#
@echo off
) > param.txt
ENDLOCAL
for /F "delims=" %%L in (param.txt) do (
set "param1=%%L"
)
SETLOCAL EnableDelayedExpansion
set "param1=!param1:*#=!"
set "param1=!param1:~0,-2!"
echo %%1 is '!param1!'
이 후 1%) 에 '및' 에코 '하는 것이 요령 활성화하십시오 확장하십시오 rem' 문 () 는 또한 '%2. %* '). 그래서, 심지어 ',' 할 수 없이 울려 & " " &, 생산, 오류가 있기 때문에 말했다.
그러나 할 수 있는 '에' 에코 리디렉션하십시오 출력입니다 두 for 루프 합니다.
또는 캐릿 ^ 선수단 일을 할 수 있는 문자, 심지어 '후' rem multiline 선 끝.
, Rem 매개변수입니다 출력입니다 하지만 조심스럽게요 파일 읽은 다음 / F 를 함께 노력해야 할 예정이었으나, 그 내용을 " 개확장 오프하도록 ";! 약간만이라도 폐기됩니다. 제거한 뒤 추가 문자로 ',' param1 해내셨어요.
사용할 수 있는 안전한 방법으로 지연 '과' param1 활성화하십시오 개확장.
어렵게 만들 필요가 없기 때문이다. 이는 단순히 명령을 매개변수입니다, 예를 들어, 2 %1%
@echo off
xcopy %1 %2 /D /E /C /Q /H /R /K /Y /Z
echo copied %1 to %2
pause
이 " pause"; 배치 파일을 보여 수행한 아무 키든 너회가 시판될 때까지 기다린다. Windows 폴더 절약합니다 스리바 것으로 보고 있다.
바로 사용할 수 있어, 유형, 예를 들면 다음과 같습니다.
xx c:\f\30\*.* f:\sites\30
이 배치 파일을 처리하는 등 모든 필요한 매개변수입니다 파일만 복사, 새로운 않는비즈니스 상술합니다. 전에 사용한 것이므로 indows. 같은 경우 파일 이름은 남겨두십시오 아웃해야 복제하는 것을 보고 있기 때문에, 'Q' 매개변수입니다.
친구가 나에게 묻는 것은 이 주제에 대한 최근 도왔으매 생각해봤죠 I& 게시물로의; d # 39 에서 내가 어떻게 처리하십니까 명령줄이 인수만 배치 파일.
이 기술을 가지고 있지만, 그 과정에서 약간의 오버헤드에 you& ll see, 내 배치 파일을 # 39 로 매우 이해하기 쉽고 빠르게 구축할 수 있습니다. 물론 관련 다음과 같은 구조:
>template.bat [-f] [--flag] [/f] [--namedvalue value] arg1 [arg2][arg3][...]
그것은 ',' 을 갖고 있는 'init 제이스트 구문 분석' 및 '주' 총괄하였습니다.
>. 사용 예제
>template.bat /?
test v1.23
This is a sample batch file template,
providing command-line arguments and flags.
USAGE:
test.bat [flags] "required argument" "optional argument"
/?, --help shows this help
/v, --version shows the version
/e, --verbose shows detailed output
-f, --flag value specifies a named parameter value
>template.bat <- throws missing argument error
(same as /?, plus..)
**** ****
**** MISSING "REQUIRED ARGUMENT" ****
**** ****
>template.bat -v
1.23
>template.bat --version
test v1.23
This is a sample batch file template,
providing command-line arguments and flags.
>template.bat -e arg1
**** DEBUG IS ON
UnNamedArgument: "arg1"
UnNamedOptionalArg: not provided
NamedFlag: not provided
>template.bat --flag "my flag" arg1 arg2
UnNamedArgument: "arg1"
UnNamedOptionalArg: "arg2"
NamedFlag: "my flag"
>template.bat --verbose "argument #1" --flag "my flag" second
**** DEBUG IS ON
UnNamedArgument: "argument #1"
UnNamedOptionalArg: "second"
NamedFlag: "my flag"
>. 템플라테스바트
@::!/dos/rocks
@echo off
goto :init
:header
echo %__NAME% v%__VERSION%
echo This is a sample batch file template,
echo providing command-line arguments and flags.
echo.
goto :eof
:usage
echo USAGE:
echo %__BAT_NAME% [flags] "required argument" "optional argument"
echo.
echo. /?, --help shows this help
echo. /v, --version shows the version
echo. /e, --verbose shows detailed output
echo. -f, --flag value specifies a named parameter value
goto :eof
:version
if "%~1"=="full" call :header & goto :eof
echo %__VERSION%
goto :eof
:missing_argument
call :header
call :usage
echo.
echo **** ****
echo **** MISSING "REQUIRED ARGUMENT" ****
echo **** ****
echo.
goto :eof
:init
set "__NAME=%~n0"
set "__VERSION=1.23"
set "__YEAR=2017"
set "__BAT_FILE=%~0"
set "__BAT_PATH=%~dp0"
set "__BAT_NAME=%~nx0"
set "OptHelp="
set "OptVersion="
set "OptVerbose="
set "UnNamedArgument="
set "UnNamedOptionalArg="
set "NamedFlag="
:parse
if "%~1"=="" goto :validate
if /i "%~1"=="/?" call :header & call :usage "%~2" & goto :end
if /i "%~1"=="-?" call :header & call :usage "%~2" & goto :end
if /i "%~1"=="--help" call :header & call :usage "%~2" & goto :end
if /i "%~1"=="/v" call :version & goto :end
if /i "%~1"=="-v" call :version & goto :end
if /i "%~1"=="--version" call :version full & goto :end
if /i "%~1"=="/e" set "OptVerbose=yes" & shift & goto :parse
if /i "%~1"=="-e" set "OptVerbose=yes" & shift & goto :parse
if /i "%~1"=="--verbose" set "OptVerbose=yes" & shift & goto :parse
if /i "%~1"=="--flag" set "NamedFlag=%~2" & shift & shift & goto :parse
if not defined UnNamedArgument set "UnNamedArgument=%~1" & shift & goto :parse
if not defined UnNamedOptionalArg set "UnNamedOptionalArg=%~1" & shift & goto :parse
shift
goto :parse
:validate
if not defined UnNamedArgument call :missing_argument & goto :end
:main
if defined OptVerbose (
echo **** DEBUG IS ON
)
echo UnNamedArgument: "%UnNamedArgument%"
if defined UnNamedOptionalArg echo UnNamedOptionalArg: "%UnNamedOptionalArg%"
if not defined UnNamedOptionalArg echo UnNamedOptionalArg: not provided
if defined NamedFlag echo NamedFlag: "%NamedFlag%"
if not defined NamedFlag echo NamedFlag: not provided
:end
call :cleanup
exit /B
:cleanup
REM The cleanup function is only really necessary if you
REM are _not_ using SETLOCAL.
set "__NAME="
set "__VERSION="
set "__YEAR="
set "__BAT_FILE="
set "__BAT_PATH="
set "__BAT_NAME="
set "OptHelp="
set "OptVersion="
set "OptVerbose="
set "UnNamedArgument="
set "UnNamedArgument2="
set "NamedFlag="
goto :eof
다음은 이스마드 절실해졌습니다.
@echo off
rem this file is named echo_3params.cmd
echo %1
echo %2
echo %3
set v1=%1
set v2=%2
set v3=%3
echo v1 equals %v1%
echo v2 equals %v2%
echo v3 equals %v3%
여기에 3 에서 페이징됩니다 명령줄입니다.
C:\Users\joeco>echo_3params 1abc 2 def 3 ghi
1abc
2
def
v1 equals 1abc
v2 equals 2
v3 equals def
C:\Users\joeco>echo_3params 1abc "2 def" "3 ghi"
1abc
"2 def"
"3 ghi"
v1 equals 1abc
v2 equals "2 def"
v3 equals "3 ghi"
C:\Users\joeco>echo_3params 1abc '2 def' "3 ghi"
1abc
'2
def'
v1 equals 1abc
v2 equals '2
v3 equals def'
C:\Users\joeco>
내가 작성했습니까 스크립트입니다 간단한 read_params 호출할 수 있는 모든 변수의 함수로 (또는 '외부' .bat), will put into the 현재 환경. 이 때문에 당초 매개변수입니다 함수 호출 중인 수정하십시오 won& # 39, t '와' 에드 원본 파일의 복사본을 매개변수입니다.
예를 들어, 다음 명령을 받은.
myscript.bat some -random=43 extra -greeting="hello world" fluff
'후' 미스크리pt.바트 함수 호출 변수를 사용할 수 있을 것 "이라고 밝혔다.
call :read_params %*
echo %random%
echo %greeting%
:read_params
if not %1/==/ (
if not "%__var%"=="" (
if not "%__var:~0,1%"=="-" (
endlocal
goto read_params
)
endlocal & set %__var:~1%=%~1
) else (
setlocal & set __var=%~1
)
shift
goto read_params
)
exit /B
한계에는 *
'등' 힘 가치가 없는 인수만 로드할 수 없습니다. 하지만 내가 생각하는 진정한 '=' 힘 사용할 수 있습니다, t 값 없이 vmnet 공백일 허용하시겠습니까 can& # 39 방식을 미리, t 값을 가질 수 있는 # 39 won& 매개변수 목록.
2/18/2016
더 이상 늦출 单捞磐啊 개확장
'-' 보고 이제 다른 명령행을 수행됨 인수 전에 매개변수입니다.
Ui_policytable_java_spe_policy 다른 곳에서 오토메이티드 로서, @Jon 의해 영감을 받은, 나는 더 일반적인 알고리즘입니다 parameters 라는 옵션임 값뿐만 추출 및 스위치.
우리가 원하는 구축하기 위해 '라고 알려 유틸리티에는 포바'. 초기 함장님이요 필요하기 때문이다. 이 회사는 '는' 선택적 매개변수입니다 푸 있는 optional 밸류급 (물론 다른 매개변수입니다 수 없는). '기본' 값이 누락되었습니다. 설정됩니다. 또한 '는' 선택적 매개변수입니다 표시줄에는 있는 required 값입니다. 마지막으로 it 플래깅 배즈 가치가 없는 '' 만들 수 있습니다. 아, 그리고 이러한 매개변수입니다 어떤 순서로든 가져올 수 있습니다.
즉, 다음과 같습니다.
foobar <command> [--foo [<fooval>]] [--bar <barval>] [--baz]
이것은 해결책:
@ECHO OFF
SETLOCAL
REM FooBar parameter demo
REM By Garret Wilson
SET CMD=%~1
IF "%CMD%" == "" (
GOTO usage
)
SET FOO=
SET DEFAULT_FOO=default
SET BAR=
SET BAZ=
SHIFT
:args
SET PARAM=%~1
SET ARG=%~2
IF "%PARAM%" == "--foo" (
SHIFT
IF NOT "%ARG%" == "" (
IF NOT "%ARG:~0,2%" == "--" (
SET FOO=%ARG%
SHIFT
) ELSE (
SET FOO=%DEFAULT_FOO%
)
) ELSE (
SET FOO=%DEFAULT_FOO%
)
) ELSE IF "%PARAM%" == "--bar" (
SHIFT
IF NOT "%ARG%" == "" (
SET BAR=%ARG%
SHIFT
) ELSE (
ECHO Missing bar value. 1>&2
ECHO:
GOTO usage
)
) ELSE IF "%PARAM%" == "--baz" (
SHIFT
SET BAZ=true
) ELSE IF "%PARAM%" == "" (
GOTO endargs
) ELSE (
ECHO Unrecognized option %1. 1>&2
ECHO:
GOTO usage
)
GOTO args
:endargs
ECHO Command: %CMD%
IF NOT "%FOO%" == "" (
ECHO Foo: %FOO%
)
IF NOT "%BAR%" == "" (
ECHO Bar: %BAR%
)
IF "%BAZ%" == "true" (
ECHO Baz
)
REM TODO do something with FOO, BAR, and/or BAZ
GOTO :eof
:usage
ECHO FooBar
ECHO Usage: foobar ^<command^> [--foo [^<fooval^>]] [--bar ^<barval^>] [--baz]
EXIT /B 1
새 배치 파일을 만들 수 있는 (예: 이 줄을 쓰기 오픈클레스트베이트) 및 파일:
java %~n1
그 후, # 39 의 말하도다 system32 폴더에 파일을 let& 배치처리 배치하십시오 이 자바 클래스 파일을 마우스 오른쪽 단추로 클릭하고 속성을 http://www. gnu. 데이터베이스에구성원을, 개방, 배치 파일 찾기 that& # 39 을 선택하고, 그 후 iqn.
작동하잖아 for me.
PS: 내가 can& cmd 창을 닫을 수 있는 방법을 찾아야 할 때, t # 39 닫으십시오 Java 클래스. 지금은.
단순한 솔루션 (비록 질문은 이전)
Test1.bat
echo off
echo "Batch started"
set arg1=%1
echo "arg1 is %arg1%"
echo on
pause
CallTest1.bat
call "C:\Temp\Test1.bat" pass123
출력입니다
YourLocalpath>call "C:\Temp\test.bat" pass123
YourLocalpath>echo off
"Batch started"
"arg1 is pass123"
YourLocalpath>pause
Press any key to continue . . .
여기서 유로칼파스 현재 디렉터리 경로가 있다.
명령 변수를 사용할 수 있는 간단한 작성하든지 유지해 매개변수 변수 및 비교.
그러나 그 때문에 나중에 쓸 수 없는 단순한 유지 관리 등 단순한 아니라 다른 사람 또는 너회가 읽어야 스크립트입니다 이해하기 쉽고, 이후 장기간 유지할 것으로 보인다.
코드를 작성할 수 인라인: 다른 지켜보리니 분입니다.
! [입력하십시오. 이미지 여기에 설명을] [1] >. 더 사용할 수 있는 모든 인수 및 순결케 batch: 루프을 확보하십시오. <! - 모든 언어: > 아무래도 랭 -;
@echo off && setlocal EnableDelayedExpansion
set "_cnt=0" && for %%Z in (%*) do (
set "_arg_=%%Z" && set /a "_cnt=!_cnt! + 1" && set "_arg_[!_cnt!]=!_arg_!"
shift && for /l %%l in (!_cnt! 1 !_cnt!) do echo/ The argument n:%%l is: !_arg_[%%l]!
)
goto :eof
>. 코드에 사용할 수 있는 인수 번호및 like. 뭔가를 필요로 하고, <! - 모든 언어: > 아무래도 랭 -;
@echo off && setlocal EnableDelayedExpansion
set "_cnt=0" && for %%Z in (%*) do (
set "_arg_=%%Z" && set /a "_cnt=!_cnt! + 1" && set "_arg_[!_cnt!]=!_arg_!"
shift
)
fake-command /u !_arg_[1]! /p !_arg_[2]! > test-log.txt