0

私は現在、初めてのバッチスクリプトを作成しようとしています。

内容:

  • 特定のフォルダからすべてのファイルを取得し、それぞれをRARに配置します

  • デスクトップのURLショートカットを生成します

これまでのところすべてが正常に機能していますが、ここに問題があります。一意のURLを使用してショートカットを作成したいと思います。今、私は次のようなスクリプトを介してURLを渡すだけです。

script.bat http://example.com

そして、スクリプトは次のことを行います。

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を定義できるようにしたいと思います。

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

PS私が何を必要とするかをあなたに知らせるためだけに、これは機能しません:

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

そして、スクリプトは最初のショートカットにURL 1を使用し、2番目のショートカットにURL2を使用する必要があります。

アップデート:

以下のjebの回答に従って、正常に動作します。しかし、私は疑問に思っていました。別の変数を使用して同じ仕事をもう一度行うことは可能でしょうか?このように見えるように:

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

そして、NewVarは次のように保存する必要があります。

SET NEWVAR=%2

URL変数が完了し、NewVar変数が開始するタイミングをスクリプトに知らせるにはどうすればよいですか?

そして、のように呼ばれるよりも

!NEWVAR!
4

1 に答える 1

3

SETelse を使用してスペースを含む変数名を作成する 場合は、スペースを避ける必要があります。

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!) を使用しました。

于 2012-05-09T13:53:20.133 に答える