マックマニアック。 Windows用DropCopy

Macのようなデバイスとメディアの削除に関する投稿を覚えていますか? そのため、そのかわいいEjectアイコンには友人がいました-DropCopy:



エントリー



Macで作業していたとき、DropCopyを使用してネットワーク上のコンピューター間でファイルを転送するシンプルさを楽しんでいました。 ブラックホールにファイルを投げ、ドロップダウンリストから送信先を選択すると、これらの同じファイルが受信者のデスクトップに表示されます。 クラス! しかし、私の解雇から2年が経過し、いくつかのケシの分裂が残っています(特にFinal Cut Proで*涙を流しました*)。 私の隣の部屋には、自分のコンピュータに座っている兄弟がいます。私自身も、ラップトップがあり、誰もが交互に使用しています。また、あるコンピュータから別のコンピュータにファイルを転送する必要があるときは常に問題があります。 しなかったこと:



重要な点に注意する価値があります-Microsoft NetworkのGeneral Documentsがこの状況で助けになったかもしれませんが、長い間完全にオフにされていたので、それらをオンにする方法がわかりません\覚えていない\したくないので、私は逆に掘り始めました結果は(私の意見では)はるかに良いです。 ですから、このことを働いている人にとっては、これ以上読むことは意味がないと思います。



調理用品



実行するには、次のものが必要です。



機械の準備





IIS



これ以上の作業は単調で単調です。すべてのマシンにFTPサーバーをインストールする必要があります。 多くの追加プログラムをインストールしたくないので、Windowsを掘り下げてIISを見つけました。 そこには穴があります(新しいバージョンがどれだけあったかはわかりませんが、古いバージョンは持っていました)が、ルーターがミニネットワークを保護しているため、私は静かに眠り、「誰かが私をハッキングしたい」という妄想を持っていません。 したがって、最初にこのパスに沿って進みます。

コントロールパネル\プログラムの追加と削除\ Windowsコンポーネント



IISの横のボックスをオンにして、[詳細]をクリックします。



論理的には、このリストからFTPが必要です。 その後のインストールと最初の問題が続きます。おそらく、Windowsをインストールした場所からドライブにディスクを挿入する必要があります。 2年前にWindowsをインストールしたので、既にどこにあるのか忘れていましたが、まだディスクを見つけましたが、インターネット上で探し回ると、これらの冒険なしでこのコンポーネントをダウンロードするためのリンクを見つけることができると思います。 あなたがまだそれを置くことができた未来に精神的に運ばれました。 さらに進む

スタート\管理ツール\インターネットインフォメーションサービス (何ですか?管理アイテムがありませんか?ホラー!キャプテンエビデンスの仕事を引き継ぐことをITの教祖が許してくれます。スタートメニュー\プロパティ\スタートメニュー\設定\詳細\管理を右クリックします。 -「すべてのプログラム」および「開始」メニューに表示

気が散った。 次に選択します:



デフォルトのFTPサイト\プロパティを右クリックします。



使用することは推奨されないため、これは最も安全でない部分です。

匿名接続ですが、私が言ったように、私は恐れることは何もありません。 もちろん、匿名ではなくパスワードを使用してユーザーを作成することはできますが、私はそれを習得しておらず、コンピューターにはユーザーが1人しかいないので、管理者でパスワードなし、IISはパスワードなしで誓います。



ここで最も重要な点は、ホームディレクトリのパスです。 デスクトップを指定する必要があります。 チェックマークを外した状態でリーディングが機能するかどうかはわかりませんので、念のために残しました。



主な問題は、デスクトップがルートによって保護されており、ユーザーIUSR_USRERNAMEにはこのフォルダーに対する権限がないため、深刻なひげを生やした管理者が私を十字架につけたものを起動する必要があることです-ユーザーIUSR_USRERNAMEを管理者のグループに移動する必要があります。 したがって: 開始\管理\コンピューターの管理\





これは、あなた自身の危険とリスクで動作するはずです)しかし、これは極度のパスであり、それから簡単で安全なパスです



Quick`n`Easy FTPサーバー



このプログラムはメインコンピューターにあります。 もちろん、あまり機能的ではないかもしれませんが、私はそれが提供するものを十分に持っています。 私はそれを長い間持っていて、どこから見つけたのかさえ覚えていません。 リンク 次に、単純なパスワードで新しいTrユーザーを作成し、彼のホームディレクトリをデスクトップとして指定しました。 味わうためにボックスをチェックしますが、すべてが機能するように)



そして、これがこのプログラムで行う必要があるすべての原則です。 起動へのショートカットをドロップするのは理にかなっています(すばやく、静かにロードします)。 今、主要部分自体:



実装



最初に、ファイアウォールを確認し、このストリームが妨げられることなく流れるようにします。 今、私たちは一緒にAutoHotKeyでコードを書いています(私の説明で他の言語でも同じように書くことができることを願っています、そして私の説明がなければ、さらに良いことです:-)最初は、プログラムは非常にシンプルで、ほんの少ししか送信できませんでしたスペースを含まない名前のファイル(2つのスペースを含む単一の入力パスは、これを意味のない3つの入力パラメーターに変換します)。 しかし、その後、プログラムは機能が成長し始め、フォルダーを投げることを学び、彼女のために空白を空け、今では進行状況の進行状況バーさえも取得しました。



前の投稿と同様に、デスクトップにはこのプログラムへのショートカットがあり、ファイルを転送すると、起動してconfig.iniからコンピューターのリストを読み取り、メニューを表示します。



私たちのプログラムは、ソケットやその他のトラブルの複雑さを掘り下げません。 彼女はすべてFTP.exeを信頼します。 この場合、FTP.exeのロジックは単純です。 転送されたファイルに基づいてスクリプトファイルを作成し、最後に次のパラメーターを指定してftp.exeを呼び出します。

ftp.exe -s: "C:\ Script File.txt"> "C:\ LogFile"

スクリプトファイルは次のようになります。

open 172.31.0.3

anonymous

slau.andre@gmail.com

binary

mkdir "ftp"

cd "ftp"

put "C:\DOCUME~1\Kefir\0016~1\ftp\1.png"

put "C:\DOCUME~1\Kefir\0016~1\ftp\2.png"

put "C:\DOCUME~1\Kefir\0016~1\ftp\9.jpg"

put "C:\DOCUME~1\Kefir\0016~1\ftp\PrScr.jpg"

mkdir ""

cd ""

put "C:\DOCUME~1\Kefir\0016~1\ftp\\config.ini"

put "C:\DOCUME~1\Kefir\0016~1\ftp\\DropFile.ahk"

put "C:\DOCUME~1\Kefir\0016~1\ftp\\DropFile.exe"

put "C:\DOCUME~1\Kefir\0016~1\ftp\\Quick'n Easy FTP Server v2.7.1 setup.exe"

cd ..

cd ..

quit








Config.iniは次のようなものです。

(.iniは、ファイル自体が.iniとは関係ありませんが、順序はプログラムフォルダー内にあるというだけです)

Borw|172.31.0.3|Username|MyPassword

Nout|172.31.0.4|anonymous|slau.andre@gmail.com






パスワードに記号が付いていることに注意してください。 失敗する運命にある;-)



さあ、始めましょう:



 ;       - .   \   #NoTrayIcon #NoEnv SendMode Input SetWorkingDir %A_ScriptDir% curr=%1% ; ,    if curr= ExitApp FTPCommandFile = %A_ScriptDir%\FTPCommands.txt ;   FTPLogFile = %A_ScriptDir%\FTPLog.txt ;  countf:=0 TSize:=0 FileDelete %FTPCommandFile% ;   FileDelete %FTPLogFile% ;   FileRead, conf, %A_ScriptDir%\config.ini ;    conf n:=0 Loop, parse, conf,`n ;     conf { i:=0 Loop, Parse, A_LoopField, | ;   | { ;      con%n%%i% = %A_LoopField% ;   i++ } name:=con%n%0 ;    . Menu, PopUp, Add, %name%, Who ;Who -    n++ ; } i:=0 n:=0 Menu, PopUp, Show ;    . ;      ;  ,    ;      return Who: { item:=A_THISMENUITEMPOS-1 addr:=con%item%1 login:=con%item%2 pass:=con%item%3 FileAppend, open %addr%`n, %FTPCommandFile% ;     ;    FileAppend, %login%`n, %FTPCommandFile% ; FileAppend, %pass%`n, %FTPCommandFile% GoSub, Go ;    return } go: ;    { ;     FileAppend, binary`n, %FTPCommandFile% ;   prev= ToolTip  ... Loop ;    { ;   ;   ;    ;  ,  ;   curr:=%A_Index% if not prev { prev=%curr% continue } if(!InStr(curr, ":\") and (curr!="")) { ;    ":\"? prev=%prev%%A_Space%%curr% ; continue } FileGetAttrib, Attributes, %prev% IfInString, Attributes, D ;  ,    ;  GenFold(prev,FTPCommandFile,countf,TSize) else { ; ,    ;  FileAppend, put "%prev%"`n, %FTPCommandFile% FileGetSize, dsize, %prev% TSize += %dsize% ;     ;   countf++ ;   } if curr = break prev=%curr% } FileAppend, quit, %FTPCommandFile% ;     SetFormat, float, 6.1 TSize:=TSize/(1024*1024) ToolTIp  ftp.exe... ; ftp.exe Run %comspec% /c ftp.exe -s:"%FTPCommandFile%" >"%FTPLogFile%", ,Hide ToolTip ;   ftp     ,      ;========================================================;  CustomColor = 666666 Gui, -Resize +LastFound +ToolWindow -Caption +AlwaysOnTop Gui, Color, %CustomColor% ;cFF9966 -      Gui, Add, Progress, x0 y0 w132 h15 cFF9966 Background666666 vMyProgLoadi GuiControl, , MyProgLoadi, 0 Gui, Font, S7 c111111, Tahoma Gui, Add, Text, vMyMemLoadi BackGroundTrans x2 y2 w100 h15, 0/%Tsize% Gui, Show, h15 w132, MyProgLoadi ;=========================================================================== countf2:=0 TSize2:=0 maybeexit:=0 Loop ;   ftp.exe,       { Process, Exist, ftp.exe if(ErrorLevel = 0) { maybeexit++ if(maybeexit>10) ;   5  { MsgBox - ftp.exe   `n  . ExitApp } Sleep 500 continue } break } Loop ;      250    { ;    Process, Exist, ftp.exe if((ErrorLevel = 0) or (countf2 >= countf)) ;    { ;   ftp.exe  Gui, Destroy FileRead, mfile, %FTPLogFile% IfNotInString,mfile,logged in ;ftp.exe   - { ;,     MsgBox, 36, ,   .`n ? IfMsgBox, Yes Run, "%FTPLogFile%" break } SetFormat, float, 6.1 ToolTIp : %countf%`n: %TSize%  ;ToolTip   ;  ,  Tooltip ; MsgBox Sleep 2000 ToolTip break } countf2:=0 TSize2:=0 FileRead, mfile, %FTPLogFile% Loop, Parse, mfile,`n ;     { ;   If(InStr(A_LoopField, "ftp: ")) { countf2++ dsize2:=SubStr(A_LoopField, 6, InStr(A_LoopField," ", 0, 6)-1) TSize2 += %dsize2% } } GuiControl, 1: , MyProgLoadi, % (countf2*100)/countf ;  SetFormat, float, 6.1 TSize2:=TSize2/(1024*1024) GuiControl,Text , MyMemLoadi, %TSize2%/%TSize%  Sleep 250 } ExitApp return } GenFold(path,FTPCommandFile,ByRef countf,ByRef TSize) { ;     fold:=SubStr(path,InStr(path,"\",0,0)+1) ;      ;       ;       ; -   ( ) FileAppend, mkdir "%fold%"`n, %FTPCommandFile% FileAppend, cd "%fold%"`n, %FTPCommandFile% Loop, %path%\*, 1, 0 { FileGetAttrib, Attributes, %A_LOOPFILEFULLPATH% IfInString, Attributes, D ;,   GenFold(A_LOOPFILEFULLPATH,FTPCommandFile,countf,TSize) else { FileAppend, put "%A_LOOPFILEFULLPATH%"`n, %FTPCommandFile% TSize += %A_LoopFileSize% countf++ } } FileAppend, cd ..`n, %FTPCommandFile% return } 
      





; - . \ #NoTrayIcon #NoEnv SendMode Input SetWorkingDir %A_ScriptDir% curr=%1% ; , if curr= ExitApp FTPCommandFile = %A_ScriptDir%\FTPCommands.txt ; FTPLogFile = %A_ScriptDir%\FTPLog.txt ; countf:=0 TSize:=0 FileDelete %FTPCommandFile% ; FileDelete %FTPLogFile% ; FileRead, conf, %A_ScriptDir%\config.ini ; conf n:=0 Loop, parse, conf,`n ; conf { i:=0 Loop, Parse, A_LoopField, | ; | { ; con%n%%i% = %A_LoopField% ; i++ } name:=con%n%0 ; . Menu, PopUp, Add, %name%, Who ;Who - n++ ; } i:=0 n:=0 Menu, PopUp, Show ; . ; ; , ; return Who: { item:=A_THISMENUITEMPOS-1 addr:=con%item%1 login:=con%item%2 pass:=con%item%3 FileAppend, open %addr%`n, %FTPCommandFile% ; ; FileAppend, %login%`n, %FTPCommandFile% ; FileAppend, %pass%`n, %FTPCommandFile% GoSub, Go ; return } go: ; { ; FileAppend, binary`n, %FTPCommandFile% ; prev= ToolTip ... Loop ; { ; ; ; ; , ; curr:=%A_Index% if not prev { prev=%curr% continue } if(!InStr(curr, ":\") and (curr!="")) { ; ":\"? prev=%prev%%A_Space%%curr% ; continue } FileGetAttrib, Attributes, %prev% IfInString, Attributes, D ; , ; GenFold(prev,FTPCommandFile,countf,TSize) else { ; , ; FileAppend, put "%prev%"`n, %FTPCommandFile% FileGetSize, dsize, %prev% TSize += %dsize% ; ; countf++ ; } if curr = break prev=%curr% } FileAppend, quit, %FTPCommandFile% ; SetFormat, float, 6.1 TSize:=TSize/(1024*1024) ToolTIp ftp.exe... ; ftp.exe Run %comspec% /c ftp.exe -s:"%FTPCommandFile%" >"%FTPLogFile%", ,Hide ToolTip ; ftp , ;========================================================; CustomColor = 666666 Gui, -Resize +LastFound +ToolWindow -Caption +AlwaysOnTop Gui, Color, %CustomColor% ;cFF9966 - Gui, Add, Progress, x0 y0 w132 h15 cFF9966 Background666666 vMyProgLoadi GuiControl, , MyProgLoadi, 0 Gui, Font, S7 c111111, Tahoma Gui, Add, Text, vMyMemLoadi BackGroundTrans x2 y2 w100 h15, 0/%Tsize% Gui, Show, h15 w132, MyProgLoadi ;=========================================================================== countf2:=0 TSize2:=0 maybeexit:=0 Loop ; ftp.exe, { Process, Exist, ftp.exe if(ErrorLevel = 0) { maybeexit++ if(maybeexit>10) ; 5 { MsgBox - ftp.exe `n . ExitApp } Sleep 500 continue } break } Loop ; 250 { ; Process, Exist, ftp.exe if((ErrorLevel = 0) or (countf2 >= countf)) ; { ; ftp.exe Gui, Destroy FileRead, mfile, %FTPLogFile% IfNotInString,mfile,logged in ;ftp.exe - { ;, MsgBox, 36, , .`n ? IfMsgBox, Yes Run, "%FTPLogFile%" break } SetFormat, float, 6.1 ToolTIp : %countf%`n: %TSize% ;ToolTip ; , Tooltip ; MsgBox Sleep 2000 ToolTip break } countf2:=0 TSize2:=0 FileRead, mfile, %FTPLogFile% Loop, Parse, mfile,`n ; { ; If(InStr(A_LoopField, "ftp: ")) { countf2++ dsize2:=SubStr(A_LoopField, 6, InStr(A_LoopField," ", 0, 6)-1) TSize2 += %dsize2% } } GuiControl, 1: , MyProgLoadi, % (countf2*100)/countf ; SetFormat, float, 6.1 TSize2:=TSize2/(1024*1024) GuiControl,Text , MyMemLoadi, %TSize2%/%TSize% Sleep 250 } ExitApp return } GenFold(path,FTPCommandFile,ByRef countf,ByRef TSize) { ; fold:=SubStr(path,InStr(path,"\",0,0)+1) ; ; ; ; - ( ) FileAppend, mkdir "%fold%"`n, %FTPCommandFile% FileAppend, cd "%fold%"`n, %FTPCommandFile% Loop, %path%\*, 1, 0 { FileGetAttrib, Attributes, %A_LOOPFILEFULLPATH% IfInString, Attributes, D ;, GenFold(A_LOOPFILEFULLPATH,FTPCommandFile,countf,TSize) else { FileAppend, put "%A_LOOPFILEFULLPATH%"`n, %FTPCommandFile% TSize += %A_LoopFileSize% countf++ } } FileAppend, cd ..`n, %FTPCommandFile% return }







ファイルパスに2つのスペースが連続して存在する場合、プログラムは無力であることに注意してください。



コード、exe、 Tutアイコン



おわりに



同じローカルネットワーク上にあるコンピューター間だけでなく、直接IPアドレスを持つリモートコンピューター間でもファイルを転送できるため、必要以上に多くのことが判明しました。

ps:誰かが壁紙が好きなら、 ここでそれらをレイアウトしました;-)

pps:ロシア語のディクテーションについては、私は常に安定した2を持っていたので、間違いをあまりscらないでください



All Articles