【做点贡献,混个脸熟】有偿答题:写一个批处理,查找某个命令所在的位置。

lw549 2008-07-24 09:02:12
类似win2k3中的where,如果没有正确答案,谜底将在明天中午揭开。

比如where notepad.exe
结果
c:\windows\noteopad.exe
c:\windows\system32\notepad.exe

...全文
157 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liaozhairen 2011-02-20
  • 打赏
  • 举报
回复
人才济济!!
孔子-说 2008-07-25
  • 打赏
  • 举报
回复
lw549 2008-07-25
  • 打赏
  • 举报
回复
这个不是全盘搜索,是在%path%范围内找,这点跟where是一致的,以为不在path内的是没什么意义的。
Forever_Young 2008-07-25
  • 打赏
  • 举报
回复
倒了,楼主不是要搜全盘啊,服了,呵呵。

如果notepad.exe在非系统分区盘有一个,或者在桌面有一个,楼主这个能搜到么,哈哈。
lw549 2008-07-25
  • 打赏
  • 举报
回复
兼容xp以后的所有版本,2k未测试。
lw549 2008-07-25
  • 打赏
  • 举报
回复
此题答案:
@echo off
FOR /F %%i IN ("%1") DO if "%%~$PATH:i" NEQ "" echo %%i, "%%~$PATH:i"

这个是我平时用的
@echo off
if "%1"=="" (
echo Usage %0 command
echo For example: %0 cmd
call %0 cmd
) else (
rem to add other kind of commands, copy the line below and edit the ext-name.
FOR /F %%i IN ("%1.com") DO if "%%~$PATH:i" NEQ "" echo %%i, "%%~$PATH:i"
FOR /F %%i IN ("%1.exe") DO if "%%~$PATH:i" NEQ "" echo %%i, "%%~$PATH:i"
FOR /F %%i IN ("%1.bat") DO if "%%~$PATH:i" NEQ "" echo %%i, "%%~$PATH:i"
FOR /F %%i IN ("%1.cmd") DO if "%%~$PATH:i" NEQ "" echo %%i, "%%~$PATH:i"
)
Forever_Young 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lw549 的回复:]
呵呵,还有更简单高效的方法。
[/Quote]

有否考虑易用性和兼容性,等着分享楼主的代码 ^_^
lw549 2008-07-25
  • 打赏
  • 举报
回复
呵呵,还有更简单高效的方法。
Forever_Young 2008-07-25
  • 打赏
  • 举报
回复
另一个,用法一样。

[code=BatchFile]
@echo off
title 查询文件所在位置 - 佛爱我羊 [2008]
cls
for /f "tokens=*" %%a in ("%1") do (call :result %%~nxa)
echo.
echo 查询完毕,按任意键退出...&pause>nul 2>nul
goto end

:result
echo %1存在于下列路径中
echo ========================================
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
if exist %%i:\ (
dir %%i:\ /b /s /a-d|findstr /i /c:"%1"
)
)

:end
[/code]
Forever_Young 2008-07-25
  • 打赏
  • 举报
回复
这个对会写点批处理的人来说,算是基本要求了吧,有两种办法,我就只写个利用wmic的,关键是简单工作量小,这20分你给的一点都不亏,呵呵。

使用方法,保存为一个批处理(比如文件名为sf.bat),可以在cmd下输入sf notepad.exe,也可以把notepad.exe拖到着个批处理上执行。

[code=BatchFile]
@echo off
cls
for /f "tokens=*" %%a in ("%1") do (call :result "%%~na" "%%~xa")
echo.&echo.&echo 查询完毕,按任意键退出&pause>nul 2>nul
exit

:result
set showfn=%1%2
set showfn=%showfn:"=%
set fext=%2
set fext=%fext:.=%
echo %showfn%存在于下列路径:&echo ============================================
for /f "tokens=2* delims==" %%i in ('wmic path cim_logicalFile where 'filename^=%1 and Extension^=%fext%' get name /value') do (echo %%i)
[/code]

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧