- ベストアンサー
サーバーテキストファイルをバッチ処理で書き換え
- CORESERVER(コアサーバー)にあるテキストファイルをローカルにあるテキストファイルの内容で書き換えたい
- 検索で調べた方法で実現できなかった
- 解決方法を教えてほしい
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
説明を少し端折っていまして申し訳ありません。 カレントフォルダを変更していますのでftpcmd.txt が読めないのでエラーが出ています。 ftpcmd.txt は C:\Documents and Settings\aaa\My Documents の下に必要です。 C:\Documents and Settings\aaa\My Documentsにftpcmd.txtを移動するか、 ftpコマンドの-sをftpcmd.txtがある絶対パスで指定するかです。
その他の回答 (4)
- maesen
- ベストアンサー率81% (646/790)
>ftp> ftp> C:\Documents and Settings\aaa\My Documents\1.txt /virtual/aaa/public_html/www.(ドメイン)/data.txt 結果ログのこの部分を見ればputの記述あたりに問題がありそうだと想像が付くと思います。 そのため、ファイルが書き換わらないのだと。 lcd " change.batは cd /d "C:\Documents and Settings\aaa\My Documents" ftp -s:ftpcmd.txt >log.txt 2>&1 こんな感じ。 ftpcmd.txtは >put C:\Documents and Settings\aaa\My Documents\1.txt /virtual/kkkk/public_html/www.(ドメイン)/data.txt を cd public_html/www.(ドメイン) put 1.txt data.txt こんな感じ。 ftpcmd.txtのcdコマンドは、ftpサーバ側のホームディレクトリの設定によって変わる場合があります。 検索でCORESERVERのftp例を見る限りではpublic_htmlの上がルートになるように見えました。 絶対パス指定は有り得ないと思います。 他の方も書かれていますが、バッチ(.batファイル)は手入力で出来るコマンドを自動で実行するようにしたものですので不具合があったら手入力で問題点を確認するようにしたほうが良いです。
補足
ありがとうございます。 その通りにやってみたところ、マイドキュメントのlog.txtはこのようになっていました。 何か根本的に間違っているのかも知れませんが、すみません。 Error opening script file ftpcmd.txt. Transfers files to and from a computer running an FTP server service (sometimes called a daemon). Ftp can be used interactively. FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [-A] [host] -v Suppresses display of remote server responses. -n Suppresses auto-login upon initial connection. -i Turns off interactive prompting during multiple file transfers. -d Enables debugging. -g Disables filename globbing (see GLOB command). -s:filename Specifies a text file containing FTP commands; the commands will automatically run after FTP starts. -a Use any local interface when binding data connection. -A login as anonymous. -w:buffersize Overrides the default transfer buffer size of 4096. host Specifies the host name or IP address of the remote host to connect to. Notes: - mget and mput commands take y/n/q for yes/no/quit. - Use Control-C to abort commands.
- Wr5
- ベストアンサー率53% (2173/4061)
>編集ではなく、ファイルを置き換える動作をさせたいと思っていますので、ファイル転送して上書きする形になります。 ならば、ファイル転送だけでOKですね。 >そのftpcmd.txtの内容を、ftpコマンドに手動で入力したら、正常に動作しますか? >(動作しないと思います) の結果はどうだったんでしょう? ネットワークの構成によってはPASVモードに設定する必要もありますけど、その辺りはどうなんでしょう? # http://www.nina.jp/server/basic/ftp.html とか。
補足
ありがとうございます。 >そのftpcmd.txtの内容を、ftpコマンドに手動で入力したら、正常に動作しますか? ですが、どこに何を入力したらいいのかがわかりませんでした。 すみません。
- kmee
- ベストアンサー率55% (1857/3366)
まず、どのように「うまくいかない」なのか、説明してください。 それがわからなければ、答える方も答えられません。 -s:によるftpの自動実行は、手で入力する代わりに行うものです。 そのftpcmd.txtの内容を、ftpコマンドに手動で入力したら、正常に動作しますか? (動作しないと思います) ftpでは、サーバー側、クライアント側、双方のカレントディレクトリを対象にファイルをやりとりします。 なので cd /d でWindows側のカレントディレクトリを移動 ftpでサーバーに接続 (ftp内の)cdでサーバーのカレントディレクトリを移動 (ftp内の)put Windows側のファイル名(あくまで、ファイル名だけ) サーバー側でのファイル名(ファイル名を変更する場合にだけ指定) というのが基本です。
補足
ありがとうございます。 ftpcmd.txt、change.batをマイドキュメントに保存して、change.batをダブルクリックすると黒い画面が一瞬表示されて消えます。 しかし、サーバーのファイルはそのままです。 ftpcmd.txt、change.batをサーバーにアップしてchange.batのURLにアクセスすると、ファイルの内容が表示されるだけです。 このような状態になっております。
- Wr5
- ベストアンサー率53% (2173/4061)
FTPはファイルの一部を編集する機能はありませんが……どういう動作を期待しているんです? そして、どういう結果になったんでしょうか? >(内容をすべて書き換えます) って事から、「/virtual/kkkk/public_html/www.(ドメイン)/data.txt」の内容が「C:\Documents and Settings\aaa\My Documents\1.txt」の内容と同じものら書き換わっている。 ということでしょうか? 「ファイル転送」するFTPとしては至って正常な動作ですが。 >put C:\Documents and Settings\aaa\My Documents\1.txt /virtual/kkkk/public_html/www.(ドメイン)/data.txt 空白混じりのファイル名指定って正しく動作するんですかね? 試した事はないのですが……。 # バッチファイルで処理するなら、私だったらftpコマンド実行前にカレントディレクトリを移動しておきますかねぇ。 # Windowsなら cd /d パス名 で、カレントドライブとカレントディレクトリの移動が一度でできるでしょうし。
補足
編集ではなく、ファイルを置き換える動作をさせたいと思っていますので、ファイル転送して上書きする形になります。 「バッチ処理」というのは検索で出てきた語句で、意味とかはわかっていませんので、その後の説明はわかりません。 ありがとうございました。
お礼
My Documentsにftpcmd.txtを移動すると動作しました。 感謝です。ありがとうございました。