Automatizar script | Renomeie uma lista definida de nome de arquivo por uma lista definida de palavra powershell

0

Todo meu código:

    #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]#

Eu tenho alguns problemas para automatizar o script (Read-Host) Isso está trabalhando com o $ erase, mas eu preciso também para o número de linhas de tabela e, em seguida, as linhas (sem um arquivo de texto)

Hamdoun

    
por Hamdoun 12.06.2015 / 16:44

2 respostas

0

Como não está claro o que você está tentando alcançar, tudo o que posso mostrar é como escrever código compreensível.

Seus nomes de variáveis dificultam o entendimento do seu script. Além disso, parece haver falhas lógicas também.

Para que você precisa disso?

$inf_list= ($count | measure -Min).Minimum

e isso:

$list_split | foreach {
   $list_split = $_ -split '*'
   Write-Host $list_split []

}

De onde isso vem de repente? A variável list_input não foi usada até aquele momento.

$list_input[$nb]

Aqui está uma função que, se chamada como Do-Whatever -Verbose , exibirá suas imagens e as linhas de seu arquivo (eu acho que é para isso que sua lógica de divisão é):

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]
}
    
por 15.06.2015 / 11:11
0

$ inf_list:

Eu conto o número de arquivos na pasta e o número de linhas no arquivo de texto, então eu uso o menor para o meu loop.

$ list_split: Eu uso isso para criar uma tabela com todos os arquivos da pasta, um por um.

$ list_input: apenas um erro não se preocupe

Sim, é a lógica correta

Na verdade, meu código funciona assim:

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

Então eu vou tentar com o seu código

    
por 15.06.2015 / 12:21