[英]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.