Автоматизировать скрипт | Переименовать определенный список имен файлов с помощью определенного списка слов powershell
Весь мой код:
#read list filenames + filter#
$listname = Get-ChildItem 'Y:\Users\H\Documents\D\Game Of Throne' -Filter *.bmp
#Read list file txt#
$line = Get-Content 'Y:\Users\H\Documents\D\Game Of Throne\prod\recup.txt'
#account name#
$count_listname= $listname.count
#account line txt#
$count_line = $line.count
#number of max action (inf_list)#
$count= $count_listname, $count_line
$inf_list= ($count | measure -Min).Minimum
#Var file by file of folder#
$list_split= $listname
$list_split | foreach {
$list_split = $_ -split '*'
Write-Host $list_split []
}
#Var line by line of the textfile#
$line_split = $line
$line_split | foreach {
$line_split = $_ -split '*'
Write-Host $line_split []
}
#Select type to delete#
$erase=Read-Host "Enter the type to delete"
#Select number of line#
$nb = Read-Host "Enter the number line to add."
#Line of replace#
$list_input[$nb] = Read-Host "Line(s):"
#Boucle#
$i= 0
while ($i -le $nb-1) {
$list_input[$i]| rename-item -newname { $_.name -replace ( $erase , $list_input[$nb] )}
$i++
}
#output#
echo "File folder" $listname ""
echo "Fichier texte " $line ""
echo "Number of file in folder" $count_listname ""
echo "Number of line in txt" $count_line ""
echo "Number max of actions" $inf_list ""
echo "Line by line" $line_split ""
echo "List one by one" $list_split ""
echo "Type to delete" $erase ""
#echo table($line_split[n] or $line_split[n]#
У меня есть некоторые проблемы, чтобы автоматизировать сценарий (Read-Host). Это работает с $erase, но оно мне тоже нужно для количества строк таблицы, а затем строк (без текстового файла).
Hamdoun
2 ответа
Поскольку не ясно, чего вы пытаетесь достичь, я могу показать вам, как писать понятный код.
Ваши имена переменных делают ваш скрипт трудным для понимания. Кроме того, в этом тоже есть логические недостатки.
Для чего вам это нужно?
$ inf_list = ($ count | measure -Min).Minimum
и это:
$list_split | foreach { $list_split = $_ -split '*' Write-Host $list_split []
}
Откуда это вдруг взялось? Переменная list_input не использовалась до этого момента.
$ List_input[$ пь]
Вот функция, которая вызывается как Do-Whatever -Verbose
выведет ваши изображения и строки вашего файла (я полагаю, для этого нужна ваша логика разделения):
Function Do-Whatever
{
[CmdletBinding()]
param(
$ImagePath = 'Y:\Users\H\Documents\D\Game Of Throne',
$ImageFilter = '*.bmp',
$SomeList = 'Y:\Users\H\Documents\D\Game Of Throne\prod\recup.txt'
)
$Images = Get-ChildItem $ImagePath -Filter $ImageFilter
$ListContents = Get-Content $SomeList
if ($PSBoundParameters['Verbose'])
{
Write-Verbose "Found Images: $($Images.count)"
foreach($Image in $Images) {Write-Verbose $Image.Fullname)
Write-Verbose "List entries count: $($ListContents.count)"
foreach($Line in $ListContents) { Write-Verbose $Line}
}
#[logic goes here]
}
$ Inf_list:
Я считаю количество файлов в папке и количество строк в текстовом файле, затем я беру наименьшее значение для моего цикла.
$ list_split: я использую это для составления таблицы всех файлов в папке, один за другим.
$ list_input: только ошибка, не беспокойтесь
Да это правильная логика
На самом деле мой код работает так:
#read list filenames + filter#
$listname = Get-ChildItem 'Y:\Users\H\Documents\D\Game Of Throne' -Filter *.bmp
#Read list file txt#
$line = Get-Content 'Y:\Users\H\Documents\D\Game Of Throne\prod\recup.txt'
#count name#
$count_listname= $listname.count
#count line txt#
$count_line = $line.count
#number of max action (inf_list)#
$count= $count_listname, $count_line
$inf_list= ($count | measure -Min).Minimum #count min
#Var file by file of folder#
$list_split= $listname
$list_split | foreach {
$list_split = $_ -split '*'
}
#Var line by line of the textfile#
$line_split = $line
$line_split | foreach {
$line_split = $_ -split '*'
Write-Host $line_split []
}
#box delete#
$erase=Read-Host "Put the caracter to delete"
#loop#
$i= 0
while ($i -le $inf_list-1) {
$list_split[$i]| rename-item -newname { $_.name -replace ( $erase , $line_split[$i] )}
$i++
}
#output#
echo "File folder" $listname ""
echo "Fichier texte " $line ""
echo "Number of file in folder" $count_listname ""
echo "Number of line in txt" $count_line ""
echo "Number max of actions" $inf_list ""
echo "Line by line" $line_split ""
echo "List one by one" $list_split ""
echo "Type to delete" $erase "
Тогда я попробую с вашим кодом