簡體   English   中英

批處理腳本+多個變量

[英]Batch Script + Multiple variables

我目前正在嘗試編寫我的第一個批處理腳本。

它能做什么:

  • 它從某個文件夾中獲取所有文件,並將每個文件放入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用於第一個快捷方式,將URL 2用於第二個快捷方式,依此類推。

更新:

現在,按照下面jeb的回答,它可以正常工作。 但是,我想知道:是否可以使用另一個變量再次執行相同的工作? 這樣看起來像這樣:

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

並且NewVar應該保存為:

SET NEWVAR=%2

當URL變量完成並且NewVar變量啟動時,如何使腳本知道?

而不是像

!NEWVAR!

使用SET時,應避免使用空格,否則將使用空格創建變量名!

您可以使用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! )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM