750717 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

さすらいのプログラマ

FTPPUT/FTPGET(バッチ)

Windowsコマンドプロンプト用FTPバッチ



同じファイルを何度もUPしたりGETしたりするのが面倒になったので作ってみました。(^^;

◆FTPPUT
@ECHO OFF

SETLOCAL

:: SET DEBUG=ECHO
:: ---------------------------------------------------------
SET DEFAULTIP=nnn.nnn.nnn.nnn
SET DEFAULTPATH=/home/*****/work
SET DEFAULTMODE=bin
SET DEFAULTUSER=*****
SET DEFAULTPASS=*****
:: ---------------------------------------------------------
SET CMDNAME=%0
SET FTPCMD=ftp
SET FTPEXEC=put
SET FTPFILE=__TEMP__
SET SEPCHAR=:

:: ---------------------------------------------------------
IF "%1"=="DEBUG" (
 SET DEBUG=ECHO
 SHIFT
)
:: ---------------------------------------------------------
IF NOT "%DEBUG%"=="" (
  ECHO.++++++++++++ DEBUG MODE ++++++++++++++++
)
:: ---------------------------------------------------------
:: FILENAME : MODE

IF "%1"=="" GOTO :USAGE
SET FILENAME=%1
SHIFT

:: IP ADDRESS : PATH

IF "%1"=="" (
  SET IPADDRESS=%DEFAULTIP%
) ELSE (
  SET IPADDRESS=%1
  SHIFT
)

:: USER : PASS

IF "%1"=="" (
  SET USERINFO=%DEFAULTUSER%
) ELSE (
  SET USERINFO=%1
)

:: ---------------------------------------------------------
:: FILENAME : MODE

CALL :SEPPROC %FILENAME%
SET FILENAME=%SEPITEM1%
IF "%SEPITEM2%"=="" (
  SET MODE=%DEFAULTMODE%
) ELSE (
  SET MODE=%SEPITEM2%
)

:: IP ADDRESS : PATH

CALL :SEPPROC %IPADDRESS%
SET IPADDRESS=%SEPITEM1%
IF "%SEPITEM2%"=="" (
  SET DESTPATH=%DEFAULTPATH%
) ELSE (
  SET DESTPATH=%SEPITEM2%
)

:: USER : PASS

CALL :SEPPROC %USERINFO%
SET USERINFO=%SEPITEM1%
IF "%SEPITEM2%"=="" (
  SET PASSINFO=%DEFAULTPASS%
) ELSE (
  SET PASSINFO=%SEPITEM2%
)

IF NOT "%DEBUG%"=="" (
  ECHO.FILENAME        [%FILENAME%]
  ECHO.MODE            [%MODE%]
  ECHO.IP ADDRESS      [%IPADDRESS%]
  ECHO.PATH            [%DESTPATH%]
  ECHO.USER            [%USERINFO%]
  ECHO.PASSWORD        [%PASSINFO%]
)
:: ---------------------------------------------------------
IF NOT EXIST %FILENAME% (
  ECHO.file not found.^(%FILENAME%^)
  GOTO :ENDBAT
)
:: ---------------------------------------------------------
(
ECHO.user %USERINFO% %PASSINFO%
ECHO.cd %DESTPATH%
ECHO.%MODE%
ECHO.%FTPEXEC% %FILENAME%
ECHO.bye
) >%FTPFILE%

:: ---------------------------------------------------------
IF NOT "%DEBUG%"=="" (
  ECHO.----- START ------
  TYPE %FTPFILE%
  ECHO.-----  END  ------
)

%DEBUG% %FTPCMD% -i -n -s:%FTPFILE% %IPADDRESS%

IF "%DEBUG%"=="" (
  DEL %FTPFILE%
)
:: -------------------------------------------------------
GOTO :ENDBAT

:: -------------------------------------------------------
:SEPPROC
SETLOCAL
SET SRC=%1
SET SEPITEM1=
SET SEPITEM2=
:SEPPROC_LOOP
IF "%SRC:~0,1%"=="" GOTO :SEPPROC_EXIT
IF "%SRC:~0,1%"=="%SEPCHAR%" (
  SET SEPITEM2=%SRC:~1%
  GOTO :SEPPROC_EXIT
) ELSE (
  SET SEPITEM1=%SEPITEM1%%SRC:~0,1%
)
IF "%SRC:~1,1%"=="" GOTO :SEPPROC_EXIT
SET SRC=%SRC:~1%
GOTO :SEPPROC_LOOP
:SEPPROC_EXIT
(ENDLOCAL &^
SET SEPITEM1=%SEPITEM1%&^
SET SEPITEM2=%SEPITEM2%&^
EXIT /B)

:: -------------------------------------------------------
:USAGE
ECHO.usage %CMDNAME% [filename:mode] [ipaddress:path] [user:pass]
GOTO :ENDBAT
:: --------------------------------------------------------
:ENDBAT
ENDLOCAL

EXIT /B
◆FTPGET
@ECHO OFF

SETLOCAL

:: SET DEBUG=ECHO
:: ---------------------------------------------------------
SET DEFAULTIP=nnn.nnn.nnn.nnn
SET DEFAULTPATH=/home/*****/work
SET DEFAULTMODE=bin
SET DEFAULTUSER=*****
SET DEFAULTPASS=*****
:: ---------------------------------------------------------
SET CMDNAME=%0
SET FTPCMD=ftp
SET FTPEXEC=get
SET FTPFILE=__TEMP__
SET SEPCHAR=:

:: ---------------------------------------------------------
IF "%1"=="DEBUG" (
 SET DEBUG=ECHO
 SHIFT
)
:: ---------------------------------------------------------
IF NOT "%DEBUG%"=="" (
  ECHO.++++++++++++ DEBUG MODE ++++++++++++++++
)
:: ---------------------------------------------------------
:: FILENAME : MODE

IF "%1"=="" GOTO :USAGE
SET FILENAME=%1
SHIFT

:: IP ADDRESS : PATH

IF "%1"=="" (
  SET IPADDRESS=%DEFAULTIP%
) ELSE (
  SET IPADDRESS=%1
  SHIFT
)

:: USER : PASS

IF "%1"=="" (
  SET USERINFO=%DEFAULTUSER%
) ELSE (
  SET USERINFO=%1
)

:: ---------------------------------------------------------
:: FILENAME : MODE

CALL :SEPPROC %FILENAME%
SET FILENAME=%SEPITEM1%
IF "%SEPITEM2%"=="" (
  SET MODE=%DEFAULTMODE%
) ELSE (
  SET MODE=%SEPITEM2%
)

:: IP ADDRESS : PATH

CALL :SEPPROC %IPADDRESS%
SET IPADDRESS=%SEPITEM1%
IF "%SEPITEM2%"=="" (
  SET DESTPATH=%DEFAULTPATH%
) ELSE (
  SET DESTPATH=%SEPITEM2%
)

:: USER : PASS

CALL :SEPPROC %USERINFO%
SET USERINFO=%SEPITEM1%
IF "%SEPITEM2%"=="" (
  SET PASSINFO=%DEFAULTPASS%
) ELSE (
  SET PASSINFO=%SEPITEM2%
)

IF NOT "%DEBUG%"=="" (
  ECHO.FILENAME        [%FILENAME%]
  ECHO.MODE            [%MODE%]
  ECHO.IP ADDRESS      [%IPADDRESS%]
  ECHO.PATH            [%DESTPATH%]
  ECHO.USER            [%USERINFO%]
  ECHO.PASSWORD        [%PASSINFO%]
)

:: ---------------------------------------------------------
IF EXIST %FILENAME% (
  ECHO.file found.^(%FILENAME%^)
  IF NOT "%DEBUG%"=="" GOTO :EXIST_FILENAME
  CALL :ANS_YESNO "override ? (Y/N) "
  IF ERRORLEVEL 1 GOTO :ENDBAT
  DEL %FILENAME%
)
:EXIST_FILENAME
:: ---------------------------------------------------------
(
ECHO.user %USERINFO% %PASSINFO%
ECHO.cd %DESTPATH%
ECHO.%MODE%
ECHO.%FTPEXEC% %FILENAME%
ECHO.bye
) >%FTPFILE%

:: ---------------------------------------------------------
IF NOT "%DEBUG%"=="" (
  ECHO.----- START ------
  TYPE %FTPFILE%
  ECHO.-----  END  ------
)

%DEBUG% %FTPCMD% -i -n -s:%FTPFILE% %IPADDRESS%

IF "%DEBUG%"=="" (
  DEL %FTPFILE%
)
:: -------------------------------------------------------
GOTO :ENDBAT

:: -------------------------------------------------------
:SEPPROC
SETLOCAL
SET SRC=%1
SET SEPITEM1=
SET SEPITEM2=
:SEPPROC_LOOP
IF "%SRC:~0,1%"=="" GOTO :SEPPROC_EXIT
IF "%SRC:~0,1%"=="%SEPCHAR%" (
  SET SEPITEM2=%SRC:~1%
  GOTO :SEPPROC_EXIT
) ELSE (
  SET SEPITEM1=%SEPITEM1%%SRC:~0,1%
)
IF "%SRC:~1,1%"=="" GOTO :SEPPROC_EXIT
SET SRC=%SRC:~1%
GOTO :SEPPROC_LOOP
:SEPPROC_EXIT
(ENDLOCAL &^
SET SEPITEM1=%SEPITEM1%&^
SET SEPITEM2=%SEPITEM2%&^
EXIT /B)

:: -------------------------------------------------------
:ANS_YESNO
SETLOCAL
SET MSG=%1
:ANS_LOOP
  SET /P ANS=%MSG%
  SET YN=
  IF "%ANS%"=="y" ( SET YN=0 )
  IF "%ANS%"=="n" ( SET YN=1 )
  IF "%ANS%"=="Y" ( SET YN=0 )
  IF "%ANS%"=="N" ( SET YN=1 )
  IF "%YN%"=="" GOTO :ANS_LOOP
(ENDLOCAL &^
EXIT /B %YN%)

:: -------------------------------------------------------
:USAGE
ECHO.usage %CMDNAME% [filename:mode] [ipaddress:path] [user:pass]
GOTO :ENDBAT
:: --------------------------------------------------------
:ENDBAT
ENDLOCAL

EXIT /B
※無断転載禁止です。


Copyright (c) 1997-2019 Rakuten, Inc. All Rights Reserved.