繁体   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