如何让这个批处理循环执行?
bat吧
全部回复
仅看楼主
level 1
fhhfnn☜ 楼主
批处理如下:
@echo off
set "srclnk=D:\1.lnk"
set "arg=abc"
if exist "%srclnk%" mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%srclnk%""):b.Arguments=(""%arg%""):b.Save:close")
以上批处理运行一次只能处理一个文件1.lnk,现在有2.lnk、3.lnk、4.lnk……10.lnk十个文件要处理,该怎么写这个循环,请大家想想办法,谢谢!
2015年05月02日 07点05分 1
level 8
@echo off
set if=0
:end
for /l %%g in (1 1 10) do (set "srclnk=D:\%%g.lnk")
set /a if+=1
if "%if% equ "10" exit
set "arg=abc"
if exist "%srclnk%" mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%srclnk%""):b.Arguments=(""%arg%""):b.Save:close")
goto end
小小改动,经验到手……
2015年05月02日 08点05分 2
不好意思我没有描述清楚问题,其实文件名不是数字,用数字只是为了说明有十个文件,而是没有规律的,字母或者汉字(比如小张.lnk、小明.lnk、john.lnk……),怎么办呢?
2015年05月02日 08点05分
level 8
那直接改路径不就好了吗
D:\*.lnk"
2015年05月02日 08点05分 3
确实有几个路径,每个路径下有不同名字的十几个文件,如果直接写路径加文件名就比较庞大了。
2015年05月02日 08点05分
@fhhfnn☜ 不是每个.lnk都需要处理
2015年05月02日 08点05分
用路径加文件名的方式指定10个文件(比如C:\A.lnk、D:\小明.lnk、E:\DVIAD.lnk、F:\MR张.lnk……),把这10个文件批处理,怎么用循环呢?
2015年05月02日 08点05分
语文不好,不太理解
2015年05月02日 09点05分
level 8
@echo off
set if=0
:end
set "name=c:\*.lnk,d:\*.lnk,e:\*.lnk"自己加
for /l %%g in (%name%) do (set "srclnk=%%g")
set /a if+=1
if "%if%" equ "10" exit
set "arg=abc"
if exist "%srclnk%" mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%srclnk%""):b.Arguments=(""%arg%""):b.Save:close")
goto end
小小改动,经验到手……
不太确定可不可以
2015年05月02日 09点05分 4
命令提示符上的光标一直在闪
2015年05月02日 09点05分
不能直接复制使用,我在手机上发的
2015年05月02日 10点05分
@wp626320338 复制有什么问题吗?好像没什么区别啊,一定要手动打出来吗?
2015年05月02日 12点05分
@wp626320338 改来改去还是命令提示符上光标一直在闪,没有任何动静,帮忙指点下吧[委屈]
2015年05月03日 05点05分
level 8
@ echo off
set "arg=abc"
for %%i in (C:\A.lnk D:\小明.lnk E:\DVIAD.lnk F:\MR张.lnk) do (
if exist "%%i" mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%%i""):b.Arguments=(""%arg%""):b.Save:close"^)
)
:: mshta最后的右括号要加转义字符
2015年05月03日 10点05分 7
加了转义字符还是提示错误:缺少‘)’代码:0 我越搞越糊涂了[乖]
2015年05月03日 15点05分
@fhhfnn☜ 不可能提示错误的。
2015年05月04日 03点05分
@fhhfnn☜ 如果文件名有引号,把后两个%%i改成%%~i
2015年05月04日 06点05分
@nefu_20061617 把""%%i""改成"%%i"就好了,真心谢谢你,还有个问题,就是in(*.lnk,*lnk,……)里面的.lnk文件在几个固定的目录下,这几个目录又很长,想用set设置变量代替固定几个目录,.lnk后缀也用变量替换,这样也许可以把精简一下程序,请问该怎么写呢?
2015年05月05日 09点05分
level 7
来个简单点的
set abg=abc
for %%i in (小明.lnk 小x.lnk) do (
if exist "%%i" mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%srclnk%""):b.Arguments=(""%arg%""):b.Save:close")
)
vbs什么的我还不太了解其他的自己改
2015年05月05日 11点05分 8
1