簡単かとおもいきや意外と手間取った。
FTPコマンドに渡すファイルを作って渡すというアイディア。
win8になってから日本語ファイル名がダメになってるとのことで、
パスに日本語が入ってるとアップロードできない。
仕方ないので適当な位置に一旦コピーしてアップロードという技を使ってる。
chcp 932 copy %1 c:\%~n1%~x1 echo open サーバー> ftpup.txt echo ユーザー>> ftpup.txt echo パスワード>> ftpup.txt echo cd アップロード先パス>> ftpup.txt echo binary echo put c:\%~n1%~x1>> ftpup.txt echo bye>> ftpup.txt ftp -s:ftpup.txt echo del ftpup.txt echo del c:\%~n1%~x1
あげくファイアウォールでふさがってることもあるので要注意。そのときは穴を開けましょう。
ネタ元
- http://oshiete.goo.ne.jp/qa/4506534.html
- http://sasuke.main.jp/ftpbat.html
- http://codezine.jp/unixdic/w/ftp
- http://www.adminweb.jp/command/display/index5.html
- https://social.technet.microsoft.com/Forums/windows/ja-JP/a25cb78b-ff1a-4ee1-9fd5-87dc2fc89aaa/ftpput?forum=w8itpro
- http://orangeclover.hatenablog.com/entry/20101004/1286120668
※複数ファイル対応版
chcp 932 echo open サーバー> ftpup.txt echo ユーザー>> ftpup.txt echo パスワード>> ftpup.txt echo cd アップロード先パス>> ftpup.txt echo binary>> ftpup.txt echo echo off> dellist.bat :loop if "%~1" == "" goto end copy %1 c:\%~n1%~x1 echo put c:\%~n1%~x1>> ftpup.txt echo del c:\%~n1%~x1>> dellist.bat shift goto loop :end echo bye>> ftpup.txt ftp -s:ftpup.txt del ftpup.txt call dellist.bat del dellist.bat