コマンドプロンプト( ローカルファイル )カレントの全てのファイルを、c:\tmp\backup に全てコピーします 但し常に上書きなので、大量のバックアップには向いていません copy *.* c:\tmp\backup コマンドプロンプト( ローカルファイルのカレントの全ての下層ファイルを新しいものだけ )カレントの全ての下層ファイルの新しいものだけを、c:\tmp\backup に全てコピーします 大量のバックアップには向いています xcopy.exe . c:\tmp\backup\ /D /E /C /S /Y ファイルのダウンロード( http な小さなファイル )VBScript から実行できますが、この方法はメモリへの圧迫が大きいので、 大きなファイルは無理です。大きなファイルは次のセクションの方法を使います cscript.exe download.vbs download.vbs
Set objSrvHTTP = Wscript.CreateObject("Msxml2.ServerXMLHTTP") strUrl = "http://lightbox.on.coocan.jp/download/WinOfSql102.lzh" on error resume next Call objSrvHTTP.Open("GET", strUrl, False ) if Err.Number <> 0 then Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 objSrvHTTP.Send Set Stream = Wscript.CreateObject("ADODB.Stream") Stream.Open Stream.Type = 1 ' バイナリ Stream.Write objSrvHTTP.responseBody Stream.SaveToFile "WinOfSql102.lzh", 2 Stream.Close ファイルのダウンロード( http な大きなファイル )php5 のパスが通っており、allow_url_fopen が true であれば 以下のようにコマンドラインがらファイルをダウンロードできます php.exe -r copy('http://lightbox.on.coocan.jp/download/WinOfSql102.lzh','WinOfSql102.lzh'); ファイルのダウンロード( http な大きなファイルで進捗状況が欲しい )Content-Length: が正しく戻されればうまく動きます ( エラーを想定してコードイングしてません ) <? $target = "http://lightbox.on.coocan.jp/download/WinOfSql102.lzh"; $local = "WinOfSql102.lzh"; $fp = fopen( $target, 'rb' ); if ( $fp ) { $meta_data = stream_get_meta_data($fp); foreach($meta_data['wrapper_data'] as $response) { if (substr(strtolower($response), 0, 16) == 'content-length: ') { $size = str_replace("content-length: ", "", strtolower($response)) + 0; } } $fp2 = fopen( $local, 'wb' ); $fs = 0; while( TRUE ) { if ( feof( $fp ) ) { break; } $ret = fread( $fp, 1024 ); fwrite( $fp2, $ret ); $fs += strlen($ret); printf( "%d %%", ($fs*100)/$size ); print chr(13); } fclose( $fp ); fclose( $fp2 ); } ?> ファイルのダウンロード( ftp なファイル )まず、以下のような PHP のコードを用意します ftp_download.php
<? if ( $argc == 2 ) { $pass = $argv[1]; } else { $pass = rtrim(fread( STDIN, 128 )); } $base_dir = "/lightbox.on.coocan.jp/homepage/download"; $file_name = "WinOfSql102.lzh"; $conn = ftp_connect("ftp.on.coocan.jp"); if (!$conn) { die('接続できません' . "\n"); } $result = @ftp_login($conn, "lightbox.on.coocan.jp", $pass); if (!$result) { die('ログインできません' . "\n"); } ftp_pasv($conn, true); ftp_get($conn, $file_name, "$base_dir/$file_name", FTP_BINARY ); ftp_close($conn); print "処理が終了しました\n"; ?> そして、以下のようなバッチファイルを作成して呼び出し、 パスワードを入力してダウンロードします。 パスワードはコンソール上に見えてしまいますが、引数が存在すればそちらを使用するので VB.NET 等のアプリケーションでラップしてパスワードを渡す事が可能です。 echo off php.exe ftp_download.php ファイルのアップロード( ftp なファイル )基本的にダウンロードと同じですが、ftp_get と ftp_put では、 ローカル・リモートファイルの引数での指定位置が互いに逆です。 <? if ( $argc == 2 ) { $pass = $argv[1]; } else { $pass = rtrim(fread( STDIN, 128 )); } $base_dir = "/lightbox.on.coocan.jp/homepage/download"; $file_name = "WinOfSql102.lzh"; $conn = ftp_connect("ftp.on.coocan.jp"); if (!$conn) { die('接続できません' . "\n"); } $result = @ftp_login($conn, "lightbox.on.coocan.jp", $pass); if (!$result) { die('ログインできません' . "\n"); } ftp_pasv($conn, true); ftp_put($conn, "$base_dir/test.lzh", $file_name, FTP_BINARY ); ftp_close($conn); print "処理が終了しました\n"; ?> |