求一个批处理命令bat或者vb的都可以

现在是这样的情况,在电脑不知道哪个盘有个叫a的文件夹这个文件夹里面有个b.txt(b也可能是在a文件夹下面的子文件夹里的)。想在指定的目录下(比如,桌面位置)创建一个快捷... 现在是这样的情况,在电脑不知道哪个盘有个 叫a的文件夹 这个文件夹里面有个b.txt(
b也可能是在a文件夹下面的子文件夹里的)。想在指定的目录下(比如,桌面位置)创建一个快捷方式,这个快捷方式将目标到b.txt,起始目录是b.txt所在的目录(不一定是a目录哦)。这么一个先是找目标文件位置,然后根据位置创建快捷方式的脚本。最好简单注明解释。回答的好可以额外追加悬赏。
展开
 我来答
来自飞英塔说话诙谐的春风
2013-05-08 · TA获得超过1727个赞
知道小有建树答主
回答量:414
采纳率:60%
帮助的人:413万
展开全部
楼上兄弟,见谅。

@echo off
setlocal enabledelayedexpansion
set str=OK.txt
rem 要查找的文档
for %%a in (C D E G H I J K) do (
echo.正在扫描%%a:
for /f %%b in ('dir %%a:\ /s/b ^|find "%str%" /i ') do (
echo.已找到%%~nxb,其路径为:%%b
set "path1=%%~dpb"
echo.!path1!
)
)
set "name=快捷方式名字"
set m="%USERPROFILE%\DESKTOP\%name%.url"
echo [InternetShortcut] >>!m!
echo URL="%path1%" >>!m!
echo IconIndex=10 >>!m!
::此处为图标代码,可自行查看修改
echo IconFile=C:\windows\system32\shell32.dll >>!m!
pause
追问
a文件夹 名字里面有空格,是知道的,所以目前这样子搜索不到还得改改(比如要搜素的文件实际目录是在D:\Program Files\pro 4.0\pro.exe)。那个ok.txt是做什么用的?起始目录如果自定义为别的地方怎么填写?
追答
@echo off
setlocal enabledelayedexpansion
set str=OK.txt
rem 要查找的文档
for %%a in (C D E G H I J K) do (
echo.正在扫描%%a:
for /f "delims=" %%b in ('dir %%a:\ /s/b ^|find "%str%" /i ') do (
echo.已找到%%~nxb,其路径为:%%b
set "path1=%%~dpb"
echo.!path1!
)
)
set "name=快捷方式名字"
set m="%USERPROFILE%\DESKTOP\%name%.url"
echo [InternetShortcut] >>!m!
echo URL="%path1%" >>!m!
echo IconIndex=10 >>!m!
::此处为图标代码,可自行查看修改
echo IconFile=C:\windows\system32\shell32.dll >>!m!
pause

不好意思,开始我测试的时候没有考虑到空格路径,现已修改。
那个OK.TXT我下面有注释,就是想要查找的文档。按照楼主的的例子就可以直接修改成B.TXT

起始盘符在C D E G H I J K 修改,例如我只想要搜索D E 盘,就将其他删除,留下DE就好了。
起始位置在第二个FOR里面,dir %%a:\ /s/b ^|find "%str%" /i
其中%%a 代表的就是盘符 ,如果我想从每个盘的PRO4.0进行搜索,那就改为:
dir %%a:\PRO4.0 /s/b ^|find "%str%" /i
即可

有事可以HI我。
匿名用户
2013-05-08
展开全部
直接搜索到文件位置然后你再右键创建快捷方式行么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我手我口
2013-05-08 · TA获得超过807个赞
知道小有建树答主
回答量:565
采纳率:61%
帮助的人:326万
展开全部
可以,稍等
追问
没看到呢?
追答

那个目录就不管了,只根据文件名去查找。


@echo off
set /p fd=请输入查找文件名:
for /f "delims=. tokens=1,2" %%c in ("%fd%") do wmic datafile where "extension='%%d' and filename='%%c'" get name >a.tmp
more +1<a.tmp>b.tmp
del a.tmp
set/p filename=<b.tmp
del b.tmp
echo Dim WshShell,Shortcut>>tmp.vbs
echo Dim path,fso>>tmp.vbs
echo path="%filename%">>tmp.vbs
echo Set fso=CreateObject("Scripting.FileSystemObject")>>tmp.vbs
echo Set WshShell=WScript.CreateObject("WScript.Shell")>>tmp.vbs
echo Set Shortcut=WshShell.CreateShortCut("%HOMEDRIVE%%HOMEPATH%\桌面\%fd%.lnk")>>tmp.vbs
echo Shortcut.TargetPath=path>>tmp.vbs
echo Shortcut.Save>>tmp.vbs
"%SystemRoot%\System32\WScript.exe" tmp.vbs
del tmp.vbs /s /q
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式