バッチファイルにドラッグ&ドロップでFTPアップロード

簡単かとおもいきや意外と手間取った。

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

あげくファイアウォールでふさがってることもあるので要注意。そのときは穴を開けましょう。
f:id:shikaku:20150306170245p:plain

ネタ元


※複数ファイル対応版

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