Coloca nomes de arquivos no diretório em um arquivo de texto com parâmetros específicos

1

Eu preciso colocar todos os nomes de arquivos no diretório (idealmente excluindo o sufixo) no arquivo de texto. Até agora estou usando

dir /b > filex.txt

mas eu preciso ter uma saída em uma linha e preciso ter OR após cada nome de arquivo para que eu possa copiar facilmente esses nomes de arquivos e colocá-los na pesquisa do Windows.

A saída no textfile deve ser assim:

file OR file1 OR file2
    
por JZK 01.01.2017 / 18:13

2 respostas

0

Se você não se importa em uma linha separada, você pode usar o abaixo.

(get-childitem -path c:\test).basename | foreach-object {$_ -replace "$_", "$_ or "} >> c:\Filename.txt

Isto irá obter os arquivos em c: \ test. .basename remove a extensão de tipo de arquivo. O foreach substitui o que está sendo canalizado para o que está sendo canalizado com ou depois dele.

Por favor note, eu tenho um espaço após o ou. Remova isso se você não precisar.

Espero que isso ajude.

Obrigado, Tim.

    
por 01.01.2017 / 23:45
0

Outra resposta do PowerShell:

(dir | % {$_.BaseName} | select -Unique) -join ' OR ' > outfile.txt

Isso obtém todos os objetos no diretório atual ( dir ), obtém apenas o título do arquivo sem extensão (a propriedade BaseName ), remove duplicatas (o -Unique sinalizador de select ), une todos aqueles juntos em uma cadeia de caracteres delimitada por  OR  e gera a saída para outfile.txt . Você não receberá um "OU" extra no final.

Se você quiser que todos os nomes sejam citados, substitua $_.BaseName por '"' + $_.BaseName + '"' . Se você quiser copiar a string terminada diretamente para a área de transferência, substitua a > e tudo depois dela por | Set-Clipboard .

Salve o script como um arquivo .ps1 . Você precisará seguir as instruções na seção Habilitando Scripts do wiki de tags do PowerShell . Uma vez feito isso, você pode executá-lo a partir de um arquivo de lote ou prompt de comando assim:

powershell .\myscript.ps1
    
por 02.01.2017 / 00:01