windowsローカルからpushdでsambaへ移動し、そこからftpでlinuxサーバからファイルをGETしてくる、という処理をMSのバッチファイルで書いていますが、下記のようにエラーとなります。


エラー:
ftp> lcd \\smb\dir1\dir2
Not connected.

smb上では、pushdでディレクトリを移動し、最後にpopdでローカルに戻る処理を書いています。

よろしくお願いします。

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2010/03/06 21:39:23
  • 終了:2010/03/13 21:40:03

回答(2件)

id:km1967 No.1

km1967回答回数541ベストアンサー獲得回数402010/03/06 22:44:41

ポイント35pt

肝心の「ftpでlinuxサーバからファイルをGETしてくる」というバッチが書かれていないので答えようがない

sambaサーバとftpサーバは同じものなの? それとも違うものなの?

id:ikazuo

説明不足でした。

sambaサーバとftpサーバは別のものです。

ありがとうございました。

2010/03/06 22:53:39
id:a532 No.2

a532回答回数31ベストアンサー獲得回数22010/03/06 23:27:41

ポイント35pt

FTP接続する前に、ネットワークドライブ定義しておけば???

  • id:ikazuo
    解決しましたのでクローズします。
  • id:ikazuo
    以下、解決したバッチファイル内容について。
    ------------------------------------------------------------------------
    最初にpushdでファイルサーバへ移動。
    以降、ファイルサーバではcdではなくpushdでDirの移動をする。
    必要な当日日付のディレクトリなどをファイルサーバ上に作成しなければ
    ならないため、pushdで移動してそこにディレクトリを作る。

    複数人がバラバラの端末から作業しており、ファイルサーバ上に
    作業ディレクトリがあるためこのような作りとしている。

    ftpルーチンではlcd、cdともに通常通りの記述でよい。
    つまりUNCパスを考慮しない通常通りの記述でOK。

    ファイルの最後に念のためpopdと書いておく。
    これでファイルサーバから抜ける。
    ------------------------------------------------------------------------

    以上です。
  • id:ikazuo
    期待通り動作したバッチファイルです。
    コメント(REMの行)は都合上、多くは削除しています。

    @echo off
    c:

    REM 日付データ取得===============================
    for /f "tokens=1,2,3 delims=/ " %%i in ('date /t') do (
    set yy=%%i
    set mm=%%j
    set dd=%%k
    )
    echo today is %yy%%mm%%dd%
    pause

    set HOMEPATH=\\192.168.0.3\dir1\dir2
    pushd "%HOMEPATH%"

    REM dirを作成する=========================
    mkdir dir3
    mkdir dir4

    REM 当日日付名のdirを作成する=========================
    pushd dir3
    mkdir %yy%%mm%%dd%
    pushd ..
    pushd dir4
    mkdir %yy%%mm%%dd%

    REM 当日日付名のdirを変数にSET=========================
    set WD00=%HOMEPATH%\dir3\%yy%%mm%%dd%
    set WD01=%HOMEPATH%\dir4\%yy%%mm%%dd%

    REM 当日日付名のdirへ移動し、--用のdirを作成=================
    pushd "%WD00%"
    mkdir AAA10
    mkdir BBB10

    REM 当日日付名のdirへ移動し、--用のdirを作成=================
    pushd "%WD01%"
    mkdir CCC10
    mkdir DDD10

    REM ---のパスを変数にSET===========================
    set WD1=/home/hoge/req/AAA
    set WD2=/home/hoge/res/BBB
    set WD3=/home/hoge/req/CCC
    set WD4=/home/hoge/res/DDD
    REM popd

    echo サーバから*csvファイルをGETします
    pause


    pushd "%WD00%"
    REM GET FTPルーチン===========================
    echo IDを入れてEnterを押して下さい。
    SET /P a=ID:
    COLOR 1
    SET /P b=PASSWORD:
    cls
    echo open 192.168.1.2> tmp.txt
    echo %a%>>tmp.txt
    echo %b%>>tmp.txt
    echo prompt>> tmp.txt
    echo bin>> tmp.txt

    echo lcd %WD00%\AAA10>> tmp.txt
    echo cd %WD1%>> tmp.txt
    echo pwd>> tmp.txt
    echo mget ENTRY_%yy%%mm%%dd%*.csv>> tmp.txt

    REM echo lcd ..>> tmp.txt
    echo lcd %WD00%\BBB10>> tmp.txt
    echo cd %WD2%>> tmp.txt
    echo mget CANCEL_%yy%%mm%%dd%*.csv>> tmp.txt

    echo bye>> tmp.txt
    ftp -s:tmp.txt > _GET_log.txt
    del tmp.txt
    cls
    color 7
    REM ======================================
    find "not found" GET_log.txt >NUL
    if %ERRORLEVEL%==0 (
    echo _GET_ファイル取得しなかったものあり>> GET_log.txt
    pause
    cls
    COLOR 7
    type GET_log.txt
    ) else (
    echo GET_正常終了!
    pause
    )
    cls
    color 7

    popd

    exit /b

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません