Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 207
1

Записать в текстовый файл размеры и имена файлов, размер которых больше заданного пользователем

17.09.2018, 15:39. Просмотров 1876. Ответов 21
Метки нет (Все метки)

записать в текстовый файл размеры и имена файлов, размер которых больше заданного пользователем. файл открыть в редакторе, имя которого указал пользователь. путь к директории с файлами задает пользователь
PowerShell
1
2
$size=Read-Host
Get-ChildItem | Foreach-Object {if ($_.Length -lt $size) {Write-Output $_.Base.Name "," $_.Length >>19.txt}}
выводит просто имена всех файлов в текстовый файл. что не правильно?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2018, 15:39
Ответы с готовыми решениями:

Записать в текстовый файл даты создания и имена файлов, размер которых меньше заданного
Добрый вечер, можно пожалуйста попросить Вас решить задачку, кому не сложно. Буду очень благодарен....

Записать в текстовый файл все имена файлов в директории
Написать дополнительный файл, подключаемый к. cpp, который записывает в текстовый файл все имена...

Удалить в заданной директории все файлы заданного расширения, размер которых больше, чем заданный пользователем
Удалить в заданной директории все файлы заданного расширения, размер которых больше, чем заданный...

Из строк текстового файла получить имена файлов и записать их в отдельный текстовый файл
Доброго времени суток, имеется текстовый файл, порядка 7-ми или 8-ми тысяч строк...

21
2699 / 1232 / 212
Регистрация: 10.12.2013
Сообщений: 4,165
17.09.2018, 16:17 2
Лучший ответ Сообщение было отмечено YuS_2 как решение

Решение

PowerShell
1
gci $dir |? Length -gt $size | select Name, Length
1
1874 / 1101 / 423
Регистрация: 22.01.2016
Сообщений: 3,050
17.09.2018, 16:18 3
Цитата Сообщение от dreems Посмотреть сообщение
$_.Base.Name
Цитата Сообщение от dreems Посмотреть сообщение
что не правильно?
Вместо $_.Base.Name нужно писать $_.BaseName
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 207
17.09.2018, 19:51  [ТС] 4
KDE777, даже если так, все равно выводит в текстовый файл имена всех файлов и без размера
0
2699 / 1232 / 212
Регистрация: 10.12.2013
Сообщений: 4,165
17.09.2018, 22:09 5
Цитата Сообщение от dreems Посмотреть сообщение
KDE777, даже если так, все равно выводит в текстовый файл имена всех файлов и без размера
Ничего он у тебя не выводит, скорее всего, поскольку условие неправильное, а видишь ты в файле какой-то застрявший старый результат, поскольку режим вывода ты используешь >> - append
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 207
18.09.2018, 13:08  [ТС] 6
volodin661, а если использовать >?

Добавлено через 11 секунд
Тогда файл пуст
0
1874 / 1101 / 423
Регистрация: 22.01.2016
Сообщений: 3,050
18.09.2018, 13:10 7
Цитата Сообщение от dreems Посмотреть сообщение
а если использовать >?
Добавлено через 11 секунд
Тогда файл пуст
Про это вам и написал volodin661

У вас условие:

Цитата Сообщение от dreems Посмотреть сообщение
размер которых больше заданного пользователем
А в коде проверка условия "меньше чем" $_.Length -lt $size
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 207
18.09.2018, 13:13  [ТС] 8
Get-ChildItem | Foreach-Object {if ($_.Lenght -got $size) {Write-Output $_.Lenght, $_.BaseName>26.txt}}
Тогда файл вообще не создается

Добавлено через 44 секунды
Опечатка
Там -gtKDE777,
0
1874 / 1101 / 423
Регистрация: 22.01.2016
Сообщений: 3,050
18.09.2018, 13:21 9
Цитата Сообщение от dreems Посмотреть сообщение
Тогда файл вообще не создается
Значит нет фалов, попадающих под это условие.

И ещё во втором ответе volodin661 показал вам вариант без Foreach и if, в который осталось добавить только экспорт результатов:

PowerShell
1
gci $dir | ? Length -gt $size | select Name,Length | epcsv .\19.txt -Del ',' -NoType -enc UTF8
+ просто проверьте на экране консоли, что нужные файлы действительно существуют:

PowerShell
1
gci $dir | ? Length -gt $size
Добавлено через 2 минуты
Цитата Сообщение от dreems Посмотреть сообщение
$_.Lenght -got $size
Надеюсь, что -got это тоже опечатка
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 207
18.09.2018, 13:25  [ТС] 10
KDE777, помогите, пожалуйста исправить мой код. Даже если я в значение size заношу единицу, то файл все равно не создается
0
1874 / 1101 / 423
Регистрация: 22.01.2016
Сообщений: 3,050
18.09.2018, 13:27 11
Цитата Сообщение от dreems Посмотреть сообщение
Даже если я в значение size заношу единицу, то файл все равно не создается
А просто на экран, как я писал выше, результат выводится?
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 207
18.09.2018, 13:33  [ТС] 12
KDE777, да
0
1874 / 1101 / 423
Регистрация: 22.01.2016
Сообщений: 3,050
18.09.2018, 13:39 13
Цитата Сообщение от dreems Посмотреть сообщение
да
Тогда и в файл должно экспортироваться:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
$size = '1'
$dir = 'c:\temp'
$out = 'c:\temp\1.csv'
 
cls
# проверяем фильтр
gci $dir | ? Length -gt $size
 
# экспортируем
gci $dir | ? Length -gt $size | select Name,Length | epcsv $out -Del ',' -NoType -enc UTF8
 
# проверяем содержимое файла
gc $out
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 207
18.09.2018, 13:43  [ТС] 14
KDE777, через Get-ChildItem это нельзя написать?
0
1874 / 1101 / 423
Регистрация: 22.01.2016
Сообщений: 3,050
18.09.2018, 13:48 15
Цитата Сообщение от dreems Посмотреть сообщение
через Get-ChildItem это нельзя написать?
gci это и есть алиас (сокращение) для Get-ChildItem

Добавлено через 2 минуты
PowerShell
1
Get-ChildItem -Path $dir | Where-Object {$_.Length -gt $size} | Select-Object -Property Name,Length | Export-Csv -Path $out -Delimiter ',' -NoTypeInformation -Encoding UTF8
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 207
18.09.2018, 14:09  [ТС] 16
KDE777,
PowerShell
1
2
3
4
$size=1$catalog=‘C:\Users\1$out=‘C:\Users\15.txt’
Get-ChildItem $catalog |Foreach-Object {if ($_.Length -get $size) {Write-Output $_.Length, $_.BaseName >>$out}}
почему так нельзя?
0
1874 / 1101 / 423
Регистрация: 22.01.2016
Сообщений: 3,050
18.09.2018, 14:29 17
Цитата Сообщение от dreems Посмотреть сообщение
почему так нельзя?
Можно, "но зачем?!"

Зачем использовать Foreach и if, когда есть Where-Object? Да и связку Write-Output с перенаправлением >> можно заменить простым Add-Content или Export-Csv

Например:

PowerShell
1
$_.BaseName + "," + $_.Length | ac $out
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 207
18.09.2018, 14:30  [ТС] 18
KDE777, мне нужно так�� но не работает
0
1874 / 1101 / 423
Регистрация: 22.01.2016
Сообщений: 3,050
18.09.2018, 14:40 19
Цитата Сообщение от dreems Посмотреть сообщение
мне нужно так�� но не работает
Очевидно, что тогда надо использовать работающий вариант
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 207
18.09.2018, 14:42  [ТС] 20
KDE777, мой нельзя исправить?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2018, 14:42

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Записать имена и размер всех файлов каталога К в файл F (выбрать файлы с размером менее 100 Kb)
Записать имена и размер всех файлов каталога К в файл F (выбрать файлы с размером менее 100 Kb)....

Записать список всех файлов из каталога К, имена которых заканчиваются на цифру, в файл F
Помогите пожалуйста зделать 1 задание есть небольшие догадки но он записывает не то что нужно в...

Дан текстовый файл Inlet.in, содержащий строковые величины S, значения которых - полные имена файлов, т.е. имя
Дан текстовый файл Inlet.in, содержащий строковые величины S, значения которых - полные имена...

В текстовый файл записать числа у которых чётных цифр больше чем нечётных
С клавиатуры вводятся числа признак конца ввода число равное 5. В текстовый файл записать числа у...

Записать в текстовый файл все слова длина которых больше девяти символов
Записать в текстовый файл все слова длина которых больше девяти символов. Выполнить через процедуру

В новый текстовый файл записать все строки исходного, в которых больше трех слов
Дан текстовый файл, состоящий из некоторого количества строк. Написать функцию для создания нового...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.