2012-05-09 13 views
0

私は現在、今までの最初のバッチスクリプトを作成しようとしています。バッチスクリプト+複数の変数

それは何

  • それは特定のフォルダからすべてのファイルを取得し、それをデスクトップ

用URLのショートカットを作成する

  • RARでのそれぞれを置きます

    これまでのところすべてうまくいきましたが、ここでは問題があります。固有のURLを持つショートカットを作成したいと思います。

    script.bat http://example.com 
    

    を、スクリプトが以下を行います:今、私は単純に、このようなスクリプトを経由してURLを渡しています。もちろん、

    SET LINK  =%1 
    
    ::For each file that is in the dir "Ori" 
    FOR %%i IN (%BASEPATH%\Ori\*.*) DO (
    
        echo [InternetShortcut] > "%BASEPATH%\New\%%~ni.URL" 
        echo URL=%LINK% >> "%BASEPATH%\New\%%~ni.URL" 
        echo IconFile=%LINK%/favicon.ico >> "%BASEPATH%\New\%%~ni.URL" 
        echo IconIndex=0 >> "%BASEPATH%\New\%%~ni.URL" 
    
    ) 
    

    この方法は、すべてのショートカットはhttp://example.comにつながります。

    作成している各ショートカットに一意のURLを定義したいと考えています。

    私は初心者ですから、どこから始めたらいいのかわかりません...そして、提案を期待していました!

    P.S.

    script.bat {http://example.com,http://example1.com,http://example2.com} 
    

    、スクリプトがように、最初のショートカットのURL 1を使用する第二のためのURL 2とすべきであるより:ちょうどあなたが私は必要だろうかという考えが、このdoesntの仕事を得ました。

    更新:

    それは今jeb'sは以下答える以下の罰金に動作します。しかし、別の変数で同じ仕事をやり直すことは可能でしょうか?

    script.bat http://example.com http://example1.com http://example2.com NewVar1 NewVar2 NewVar3 
    

    そしてNewVarは、同じように保存する必要があります:それはちょっと、このようになりますように、どのように私はURL変数が行われたときにスクリプトが知っているとNewVar変数を開始させることができ

    SET NEWVAR=%2 
    

    し、他のあなたは、スペースを持つ変数名を作成SETを使用するときは、スペースを避けるべき

    !NEWVAR! 
    
  • 答えて

    3

    のように呼ばれることよりも!

    すべてのパラメータをSHIFTコマンドで列挙できます。

    その後、あなたはすべてのパラメータを移動します

    script.bat http://example.com http://example1.com http://example2.com 
    
    setlocal EnableDelayedExpansion 
    SET LINK=%1 
    
    ::For each file that is in the dir "Ori" 
    FOR %%i IN (%BASEPATH%\Ori\*.*) DO (
    
        echo [InternetShortcut] > "%BASEPATH%\New\%%~ni.URL" 
        echo URL=!LINK! >> "%BASEPATH%\New\%%~ni.URL" 
        echo IconFile=!LINK!/favicon.ico >> "%BASEPATH%\New\%%~ni.URL" 
        echo IconIndex=0 >> "%BASEPATH%\New\%%~ni.URL" 
        shift 
        call set link=%%1 
    
    ) 
    

    SHIFTのようなものを使用することができますので、あなたは%1にアクセスし、次の時間は、あなたは次のパラメータを取得します。
    ブロックされているので、現在の%1に直接アクセスすることはできませんので、ここでCALL %%のトリックを使用します。

    ブロック内の現在の値LINKにアクセスするには、遅延拡張(!Link!)を使用しました。

    +1

    +1とても速い!なぜ私は気にしないのですか...。haha – iesou

    +0

    素早く答えてくれてありがとう!今のところ期待どおりに動作します:)しかし、更新された質問も見てもらえますか? – Andrej

    +0

    »避ける«あまりにも柔らかすぎる単語、私は思う;-) – Joey

    関連する問題