我正在尝试让脚本执行以下操作:
搜索文件位置并获取任何.txt,.ini,.config文件。 在用户的输入上过滤此文件。 将所有文件移动到某个位置。
我在尝试输入变量时遇到了问题,它可能非常简单,但我目前正在努力弄清楚我需要做什么而不用手动分割字符串。任何想法?
$QQ = Read-Host -Prompt "String your searching for:"
$QL = Read-Host -Prompt "Enter the file location you wish to search:"
$FT = Get-ChildItem -Path "$QL" -recurse | where {$_.extension -eq ".txt"} | % {$_.fullname}
$FI = Get-ChildItem -Path "$QL" -recurse | where {$_.extension -eq ".ini"} | % {$_.fullname}
$FC = Get-ChildItem -Path "$QL" -recurse | where {$_.extension -eq ".config"} | % {$_.fullname}
$FTS = Get-Content -Path "$FT" -Filter "$QQ"
$FIS = Get-Content -Path "$FI" -Filter "$QQ"
$FCS = Get-Content -Path "$FC" -Filter "$QQ"
$FD = "C:\Search-$QQ"
$FD1 = Get-ChildItem $FD
function folder {
if ($FD -eq $Null) {New-Item "$FD" -ItemType directory}}
function search{
if ($FTS -ne $null){Copy-Item -Path $ft -Destination "$fd" | Write-Host "$FT" | Format-List}
if ($FIS -ne $null){Copy-Item -path $fi -Destination "$fd" | Write-Host "$FI" | Format-List}
if ($FCS -ne $null){Copy-Item -Path $fc -destination "$fd" | Write-Host "$FC" | Format-List}
}
folder
search;
收到错误的一个例子是:(显然它将字符串中的多个文件视为一个问题)
Get-Content:找不到路径' C:\ test \ Test \ 1c.config C:\ test \ Test \ 2c.config C:\ test \ Test \ 3c.config'因为它不存在。
答案 0 :(得分:1)
马上我发现folder
函数将不起作用属性,因为$FD
将永远不为null,因为你为它分配一个字符串,如果你需要检查文件夹是否存在使用{{ 1}}。但是对于你的实际脚本,问题是你使用Test-Path
试图将所有文件内容读入一个字符串数组。从它的外观来看,你应该只使用get-content
返回的数组并使用Get-ChildItem
来检查你的路径而不是你正在使用的那种奇怪的Test-Path
方法(因为它的内容文件并不重要,只是它们是否存在)。您还需要合并一个循环来单独处理每个数组元素,而不是尝试像您一样在组中处理它们。
答案 1 :(得分:0)
(此脚本用于批量搜索应用程序文件以查找服务器ID或密码等硬编码等值)
固定代码:
...
for (int k = 0; k < sortByNodes.getLength(); k++) {
Node sortBy = sortByNodes.item(k);
if(sortBy.getNodeName().equals("sort_by_letter")) {
System.out.println("SORT BY: " + sortBy.getNodeName());
...
答案 2 :(得分:0)
试试这个
$QL = Read-Host -Prompt "Enter the file location you wish to search:"
if (-not (Test-Path $QL))
{
write-host "Specified path ($QL) doesnt exists "
return;
}
$QQ = Read-Host -Prompt "String your searching for:"
$FD = "C:\Search-$QQ"
New-Item "C:\Search-$QQ" -ItemType directory -Force | out-null
Get-ChildItem -Path "$QL" -recurse -include "*.txt", "*.ini", "*.config" |
select-string -Pattern "$QQ" -SimpleMatch |
%{ Copy-Item -Path $_.Path -Destination "$fd" -Force ; $_.Path }