1

Мне нужно поместить все имена файлов в каталоге (в идеале, исключая суффикс) в текстовый файл. Пока я пользуюсь

dir /b > filex.txt

но мне нужно иметь вывод в одну строку, и мне нужно иметь OR после каждого имени файла, чтобы я мог легко скопировать эти имена файлов и поместить их в поиск Windows.

Вывод в текстовом файле должен выглядеть следующим образом:

file OR file1 OR file2

2 ответа2

0

Если вы не возражаете против этого в отдельной строке, вы можете использовать ниже.

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

Это получит файлы в c:\test. .basename удаляет расширение типа файла. Foreach заменяет то, что проходит по каналу, и то, что проходит по нему или после него.

Также обратите внимание, у меня есть пробел после или. Удалите это, если вам это не нужно.

Надеюсь это поможет.

Спасибо, Тим.

0

Еще один ответ PowerShell:

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

Он получает все объекты в текущем каталоге (dir), принимает только заголовок их файла без расширения (свойство BaseName), удаляет дубликаты (флаг выбора -Unique select), объединяет все эти объекты в одну строку, ограниченную  OR  , и выводит его в outfile.txt . Вы не получите дополнительное "ИЛИ" в конце.

Если вы хотите, чтобы все имена были в кавычках, замените $_.BaseName с '"' + $_.BaseName + '"' . Если вы хотите скопировать готовую строку непосредственно в буфер обмена, замените > и все после нее на | Set-Clipboard .

Сохраните скрипт как файл .ps1 . Вам нужно будет следовать инструкциям в разделе «Включение сценариев» вики-тега PowerShell . Как только это будет сделано, вы можете запустить его из командного файла или командной строки, например:

powershell .\myscript.ps1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .