Uma versão do powershell para / f (| findstr) para pastas / arquivos Unicode

3

Aqui está um pequeno script que escrevi recursivamente varrendo um diretório sem alguns subdiretórios pai e extrai alguns atributos dos arquivos dentro dele.

@echo off
echo Path,Name,Extension,Size > filelist.txt
for /f "delims=" %%i in ('dir D:\שער /A:-d /s /b ^| findstr /l /i /v ^/c:"קקק" ^/c:"ttt"') 
do echo %%~dpi,%%~ni,%%~xi,%%~zi >> filelist.txt

O problema é que o findstr não suporta caracteres Unicode (hebraico neste caso, para / f se você mudar a fonte do console).

Qual é a versão do PowerShell deste script (assumindo que o loop PS suporta caracteres unicode)?

Obrigado

    
por Roey Peretz 05.07.2017 / 09:11

1 resposta

0

Supondo que seu comando findstr seja usado para pesquisar o conteúdo dos arquivos para o texto קקק , aqui está o equivalente ao código do PowerShell:

Set-Content -Path 'filelist.txt' -Value 'Path,Name,Extension,Size' -Encoding UTF8

foreach( $file in (Get-ChildItem -File -Path 'C:\Temp\שער' -Recurse) )
{
    $nameCount = Get-Content -Path $file.FullName -Encoding UTF8 | Select-String -Pattern 'קקק' | Measure-Object | Select-Object -ExpandProperty Count

    if( $nameCount -gt 0 )
    {
        $line =  $file.DirectoryName + ',' + $file.BaseName + ',' + $file.Extension + ',' + $file.Length
        Add-Content -Path 'filelist.txt' -Value $line -Encoding UTF8
    }
}
    
por 30.11.2017 / 16:18