使用Windows CLI(cmd),如何找到他知道部分名称的文件?例如,每一个Windows工作站都将javac安装在不同的位置,如何从Windows CLI(cmd)中找到它?
谷歌搜索我只提到使用Windows资源管理器(文件管理器)GUI或下载一些免费软件应用程序。Windows真的没有内置的定位命令吗?服务器版本有吗?我不希望安装cygwin或其他任何东西,这些都是典型的不是我的机器。
javac
通常应该在同一地点...
使用Windows CLI(cmd),如何找到他知道部分名称的文件?例如,每一个Windows工作站都将javac安装在不同的位置,如何从Windows CLI(cmd)中找到它?
谷歌搜索我只提到使用Windows资源管理器(文件管理器)GUI或下载一些免费软件应用程序。Windows真的没有内置的定位命令吗?服务器版本有吗?我不希望安装cygwin或其他任何东西,这些都是典型的不是我的机器。
javac
通常应该在同一地点...
Answers:
您应该能够做以下事情dir
:
dir [filename] /s
将[filename]替换为您要查找的文件名,您应该可以使用通配符。/ s使其搜索子目录,因此如果需要,可以从C:的根目录开始,并检查整个驱动器。
javac
安装到C:\WINDOWS
...
没有人谈论“ where”命令?它在当前环境的PATH中搜索可执行文件。
where <executable>
c:\ where
The syntax of this command is:
WHERE [/R dir] [/Q] [/F] [/T] pattern...
Description:
Displays the location of files that match the search pattern.
By default, the search is done along the current directory and
in the paths specified by the PATH environment variable.
Windos有最直接的答案。但是,如果您喜欢命令行,那么您可能也想看看powershell。要完成您要使用的相同类型的搜索
get-childitem [starting path eg c:\users\] -filter [wildcarded search or filename] -recurse
这有一个很好的附带好处,就是可以被输入到方便的foreach语句中并针对搜索结果运行过程。
get-childitem [starting path eg c:\users\] -filter [wildcarded search or filename] -recurse |
foreach ($_){
[do something to $_.fullname , like maybe display my image file or relocate it etc..]
}
gci
或ls
。
cmd
in 不同,PowerShell
您可以像Linux中一样使用“ Tab”查看建议。因此实际键入的次数并不多。而且,就我而言,ls
在PowerShell中无法正常工作。
我只是得到了适用于Windows的定位程序。您只需要按照自述文件说明将.dll文件和.exe复制到system32。
备选方案包括将程序路径添加到环境变量PATH。
这个想法是,如果您正在寻找“类似”定位的东西,则可以在Windows上定位。:)
locate
在我的Win7计算机上。它抱怨数据库安装了435天,而安装时间不超过3个月。并且updatedb
不包括在内。
这个问题有点模棱两可。
您想找到一个文件(在OP的主体中声明),但您也想要一个“ locate-type”命令/应用程序(在标题中声明)。有一个微妙的考虑因素,具有深远的意义。您可以使用两种不同的方法进行定位:
在每次搜索中直接搜索目标树结构(缓慢)。
首先创建目标树结构的数据库(可能很耗时),然后通过搜索数据库进行定位(非常快)。该数据库必须定期更新以获得良好的搜索结果。请参阅http://en.wikipedia.org/wiki/Locate_%28Unix%29。
Unix locate
是“类型2”,但是根据OP的主体,您可以使用这两种方法中的任何一种。此外,您专门询问CLI选项。
我在下面列出了一些选项,并指定它们是否是CLI / GUI,键入1/2,然后添加一些注释。
http://locate32.cogit.net/
(已经由John T,然后由Cheeku指向)。GUI,键入2。有一个便携式版本。出色的易用性和可配置性。与Unix非常相似locate
(我曾经使用过并且非常喜欢它)。
注意:我习惯了Unix Updatedb
花费很长时间来更新数据库(当然,这取决于扫描树的大小),我发现它locate32
非常快。我不知道该如何改善。
dir [filename] / s,由Windos解决。CLI,输入1。
gci ...,由OldWolf解决。CLI,输入1。
http://gnuwin32.sourceforge.net/packages/findutils.htm CLI,输入2。
一切 GUI,键入?。
我创建了一个PowerShell端口来查找和更新b。使用SQLite作为后端,并具有自动安装程序。只是
.\Invoke-Locate.ps1 -install.
定位大约需要300毫秒/查询。
然后
locate whatever
并且您被设置。
https://gallery.technet.microsoft.com/scriptcenter/Invoke-Locate-PowerShell-0aa2673a
我知道很久以前就已经回答了这个问题,但这是我的脚本,用于模拟在unix / linux中使用的locate函数
将该文件另存为locate.bat,然后放入System32中,或者从其存储目录中运行。采用一个类似“ cmd> locate javac.exe”的参数
找到/ c开关(作为第二个参数将计算实例数)并找到/?将显示帮助文本
@echo off
if [%1]==[] goto :usage
if [%1] == [/?] (
:usage
echo Usage:
echo locate "filename" { optional } /c { shows counter }
echo note: results are exported to C:\temp\result.txt
goto :EOF
) else (
setlocal EnableDelayedExpansion
dir /a /b /s C:\ | findstr /I "%1" > C:\temp\result.txt
type C:\temp\result.txt | more /S
set counter=0
if [%2] == [/c] (
for /F %%i in ('type C:\temp\result.txt') do (
set /a counter=!counter!+1
)
echo Total Matches: !counter!
)
)
endlocal > nul
goto :EOF
编辑:(更新的脚本,更有条理,可以处理多种情况,例如允许任何搜索词而不仅仅是文件名)
@echo off
::initialize local varaibles to default values
setlocal
set file=
set directory=
set toppath=top
::some switch validation ( from command line )
if [%1]==[] goto :Usage
if [%1]==[/?] goto :Usage
if [%1]==[/help] goto :Usage
::handle switches with if structures
if [%2]==[/c] (
set count=yes
) ELSE (
if [%2]==[/t] ( if [%3]==[] (goto :Usage) else (set toppath=%3))
if [%4]==[/c] (
set count=yes
) ELSE (
set count=
)
)
set file=%1
::Directory Validation ( Goto jumps possible, along with raptors )
if [%toppath%] == [] (
IF NOT EXIST %toppath% goto :FolderInvalid
) else (
if [%toppath%] neq [top] set directory=%toppath%
)
set toppath=
setlocal EnableDelayedExpansion
::Run Bulk of the Script
dir /a /b /s %directory% | findstr /I "%file%" > C:\temp\result.txt
type C:\temp\result.txt | more /S
set counter=0
if [%count%]==[yes] (
for /F %%i in ('type C:\temp\result.txt') do (
set /a counter=!counter!+1
)
echo Total Matches: !counter!
)
goto :End
:Usage
echo locate ^[file^] {term^/file to look for} ^| ^[^/t^] {dir^/subdirs to search} ^| ^[^/c^] {show counter}
echo.
echo notes to user: 1. Results are exported to C:\temp\result.txt
echo 2. Default search dir is the current unless specified by ^/t switch
echo 3. For best results write switches in order given ! ( or beware of raptors )
goto :End
:FolderInvalid
echo Folder Invalid
:End
endlocal > nul
对于未来的太空Windows历史学家:我们很幸运,有了Everything Search。图片dmenu + find + mlocate汇总为带有cli选项的紧凑,非常小的Windows服务。除了这个东西实时更新其索引。Linux上没有什么比这更接近的了。这将是您会说“哎呀,我希望这个织补内核有点像Microsofty”的几次。