我想编写一个小脚本来搜索确切的文件名,而不是文件名中的字符串.
例如,如果我使用资源管理器搜索"主机",默认情况下会得到多个结果.使用脚本我只想要我指定的名称.我假设它有可能吗?
我只是真正开始编写脚本而且它仅供我个人使用,所以它并不重要,它只是让我烦恼.我有几个驱动器,所以我开始使用2个输入,一个用于查询驱动器号,另一个用于指定文件名.我可以通过扩展名,文件大小等进行搜索,但似乎无法将搜索固定到确切的名称.
任何帮助,将不胜感激!
编辑:感谢所有回复.只是为了更新.我在我的小脚本中添加了一个答案,效果很好.所有三个反应都有效,但我最终只能使用一个,而不是另外两个.干杯.只是为了澄清,'npp'是Notepad ++的别名,一旦找到就打开文件.
$drv = read-host "Choose drive"
$fname = read-host "File name"
$req = dir -Path $drv -r | Where-Object { !$PsIsContainer -and [System.IO.Path]::GetFileNameWithoutExtension($_.Name) -eq $fname }
set-location $req.directory
npp $req
Run Code Online (Sandbox Code Playgroud) 在尝试操纵外部站点的布局时,我经常被迫使用一系列选择器来定位我想要的特定元素.我第一次遇到这个时,我得到了一个jQuery解决方案,很容易得到结果.我宁愿不依赖jQuery,也想知道这在标准Javascript中是多么可行.这是一个jQuery'链'的例子 -
$('div[id="entry"] > p[class="header"] > span[id="title"] > div[class*="entry"] > p[class="title"] > a[class*="target"]').. etc
Run Code Online (Sandbox Code Playgroud)
所以说HTML结构粗略
<div id="entry">
<p class="primary">
<p class="header">
<span class="side">
<span id="title">
<div class="secondary entry">
<p class="return">
<p class="title">
<a class="img">
<a class="mytargetelement">
Run Code Online (Sandbox Code Playgroud)
那么这怎么可能正常呢?谢谢.
我尝试编写一个小脚本来自动创建mp3/mp4文件的几十个文件夹/子文件夹的播放列表(m3u),同时省略其中的各种其他misc文件.我对Powershell知之甚少,但却设法将几乎可行的东西拼凑起来.唯一的昙花一现是当我使用"$ _ .extension -eq"时,它似乎不起作用,或者至少我没有正确使用它.例如,如果我使用它来匹配临时文件夹中的log/txt文件,它可以工作,但不适用于此实例.这是代码 -
$pathname = read-host "Enter path"
$root = Get-ChildItem $pathname | ? {$_.PSIsContainer}
$rootpath = $pathname.substring(0,2)
Set-Location $rootpath
Set-Location $pathname
foreach($folder in $root) {
Set-Location $folder
foreach($file in $folder) {
$txtfile =".m3u"
$files = gci | Where-Object {$_.extension -eq ".mp3" -or ".mp4"}
$count = $files.count
if($count -ge 2){
$txtfile = "_" + $folder.name + $txtfile
Add-Content $txtFile $files
}
}
if(test-path $txtFile){
Add-Content $txtFile `r
}
Set-Location $pathname
}
Run Code Online (Sandbox Code Playgroud)
我尝试了几种变体,比如将"-match"交换为"-eq",但没有运气.顺便说一句,如果我从括号中省略"-or".mp4""那么它工作正常,但我需要它来匹配两者,并且只有两个mp3/mp4.
提前致谢.