Весь мой код:

    #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 ответа2

0

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

Ваши имена переменных делают ваш скрипт трудным для понимания. Кроме того, в этом тоже есть логические недостатки.

Для чего вам это нужно?

$ inf_list = ($ count | measure -Min).минимальный

и это:

$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]
}
0

$ 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 "

Тогда я попробую с вашим кодом

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