web-dev-qa-db-ja.com

Wine:CMDからファイルをダウンロードする方法は?

人々が基本的にさまざまな理由でbash環境全体をWindowsに持ち込み、そこでbashで遊んでいるのと同じように、私は非常に小規模で同様のことをしたいと思います。 cmd.exeファイルを起動できる.batがあることに気づきました。私の邪魔になる問題は1つだけで(バッチはbashよりもはるかに簡単です)、それはインターネットへのアクセスです。

明らかに、WinでいくつかのCコードをコンパイルし、それをコピーしてファイルをダウンロードすることはできますが(wineから可能であるはずです)、システムにすでに存在するツールを使用したいと思います。だから、私が持っていないものは:

  • bitsadmin.exe
  • powershell

私が持っているもの:

  • wine-1.6.2
  • bash環境全体(機能する場合はwgetで十分です)
  • ワインのiexplore.exe
  • ワインのcscript.exe

私が試したこと:

  • set PATH=%PATH%;Z:\usr\bin && wgetはコマンドwgetを認識できないため、dir Z:\usr\binは正常に機能しますが、このようなバイナリをこのように使用できないようです。
  • bitsadminとpowershell、欠落
  • iexplore.exe、コマンドラインサポートなし

this 回答からVBSも試しましたが、驚くべきことに、ある種の解析エラーが返されます。これは、ある種の許可エラーである "Unspecified Error" です。

Z:\home\hop>cscript test.vbs
Z:\home\hop>fixme:cscript:wWinMain (0x7ed90000 (nil) L"test.vbs" 1) forwarding t
o wscript
fixme:vbscript:VBScript_SetScriptState unimplemented SCRIPTSTATE_INITIALIZED
fixme:vbscript:parse_script parser failed around L"nt\r\n\r\nwith bStrm\r\n\t.ty
pe = 1......
fixme:wscript:run_script ParseScriptText failed: 80004005

しかし、何らかの理由でwscriptcscriptは空のようです。

cscript /?
Z:\home\hop>fixme:cscript:wWinMain (0x7ed90000) (nil) L"/?" 1) forwarding to wscript

wscript /?
^ outputs nothing, just an empty newline

Windowsのユーザーは、コンソールに何かを出力するか、何かを含む新しいウィンドウを出力します。少なくともcscriptが機能することを期待していました。

だから...コンソールを介してGNU/Linuxディストリビューションのwine cmd環境から(any)ファイルをダウンロードする方法のアイデア(クリックしない、またはブラウザから手動でダウンロードする) ?

1
KeyWeeUsr

#winehq IRCチャネル(freenode)の人々は私に docs を指摘し、私は/usr/bin/wgetの小さなラッパーを作成しました。これは使用可能で、代わりに使用できますGNU/Linux環境のbitsadmin.exeの場合。

構文:wget.exe switch task_name url filename、bitsadminのように:

bitsadmin/transfer "タスク名" " https://xyz.blob/file.ext " "myfile.ext"

wget.exe

#!/bin/bash
wget -O $4 $3

その後、ファイルを実行可能chmod +x wget.exe)にする必要があります。ユーザーの操作がほとんど必要なステップ(サイレントにchmodできれば良すぎる)、その後は次のように/usr/bin/wgetを楽しく使用できます。

wine cmd /c wget.exe /transfer "Task Name" "https://xyz.blob/file.ext" "myfile.ext"

注:冗談は、Wineが実際に実行するためにファイルがWindows実行可能ファイルである必要がないということです。そのため、bashスクリプトを実行できます。実行可能ファイルとして設定されていて、bashにアクセスできる場合は、続行する方法を知っています...

0
KeyWeeUsr

これがハイブリッドスクリプトです[Batch/Vbscript]ファイルをダウンロードします!

@echo off
mode con:cols=90 lines=10
title -==*==- Batch File Downloader -==*==-
(
echo Option Explicit
echo.
echo Dim Message, result
echo Dim Title, Text1, Text2
echo.
echo Message = "Type the URL of the file to download http://www.kcc.edu/campaigns/PublishingImages/poh.jpg"
echo Title = "Type the URL of the file to download"
echo Text1 = "You canceled"
echo.
echo result = InputBox^(Message, Title, "http://www.kcc.edu/campaigns/PublishingImages/poh.jpg", 900, 900^)
echo.
echo.
echo If result = "" Then
echo    WScript.Echo Text1
echo Else
echo    WScript.Echo result
echo End If
)>"%tmp%\inputbox.vbs"
for /f "tokens=* delims=*" %%a in ('Cscript "%tmp%\inputbox.vbs" //nologo') do (set "a=%%a")
(
echo path = "%A%"
echo pos = InStrRev(path, "/"^) +1
echo Const DownloadDest = "%A%"
echo LocalFile = Mid(path, pos^)
echo Const webUser = "admin"
echo Const webPass = "admin"
echo Const DownloadType = "binary"
echo dim strURL
echo.
echo function getit(^)
echo  dim xmlhttp
echo.
echo  set xmlhttp=createobject("MSXML2.XMLHTTP.3.0"^)
echo  'xmlhttp.SetOption 2, 13056 'If https -^) Ignore all SSL errors
echo  strURL = DownloadDest
echo  Wscript.Echo "Download-URL: " ^& strURL
echo.
echo  'For basic authentication, use the list below, plus user variables? Give Way
echo  xmlhttp.Open "GET", strURL, false, WebUser, WebPass
echo  'xmlhttp.Open "GET", strURL, false
echo.
echo  xmlhttp.Send
echo  Wscript.Echo "Download-Status: " ^& xmlhttp.Status ^& " " ^& xmlhttp.statusText
echo.
echo  If xmlhttp.Status = 200 Then
echo    Dim objStream
echo    set objStream = CreateObject("ADODB.Stream"^)
echo    objStream.Type = 1 'adTypeBinary
echo    objStream.Open
echo    objStream.Write xmlhttp.responseBody
echo    objStream.SaveToFile LocalFile , 2 '//overwrite
echo    objStream.Close
echo    set objStream = Nothing
echo  End If
echo.
echo.
echo  set xmlhttp=Nothing
echo End function
echo.
echo getit(^)
echo Wscript.Echo "Download complete. Check " ^& LocalFile ^& " for Success."
echo Wscript.Quit(intOK^)
)>"%tmp%\httpdownload.vbs"
::Start
echo(
echo  Please wait ... Download file is in progress ...
for /f "tokens=* delims=*" %%a in ('Cscript "%tmp%\httpdownload.vbs" //nologo') do (echo "%%a")
Del %tmp%\httpdownload.vbs
::End
pause>nul
0
Hackoo