Skript automatisieren | Benennen Sie eine definierte Liste von Dateinamen durch eine definierte Liste von Wortpowershell um

730
Hamdoun

Mein ganzer Code:

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

Ich habe einige Probleme, das Skript zu automatisieren (Read-Host). Dies funktioniert mit $ Erase, aber ich brauche es auch für die Anzahl der Tabellenzeilen und dann für die Zeilen (ohne Textdatei).

Hamdoun

0
Mir ist immer noch nicht klar, was Sie erreichen wollen. Bitte posten Sie den Inhalt der Liste, damit wir sehen können, ob Ihr Ansatz der richtige Weg ist. megamorf vor 8 Jahren 0

2 Antworten auf die Frage

0
megamorf

Da es nicht klar ist, was Sie zu erreichen versuchen, kann ich Ihnen verständlich Code schreiben.

Ihre Variablennamen machen Ihr Skript schwer zu verstehen. Darüber hinaus scheint es auch logische Mängel zu haben.

Wofür brauchst du das?

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

und das:

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

}

Woher kommt das plötzlich? Die Variable list_input wurde bis zu diesem Zeitpunkt noch nicht verwendet.

$ list_input [$ nb]

Hier ist eine Funktion, die, wenn sie wie aufgerufen aufgerufen Do-Whatever -Verbosewird, Ihre Bilder und die Zeilen Ihrer Datei ausgibt (ich denke, dafür ist Ihre Split-Logik gedacht):

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)  }  #[logic goes here] } 
0
Hamdoun

$ inf_list:

Ich zähle die Anzahl der Dateien im Ordner und die Anzahl der Zeilen in der Textdatei, dann nehme ich die niedrigste für meine Schleife.

$ list_split: Ich verwende dies zum Erstellen einer Tabelle aller Dateien im Ordner, eine nach der anderen.

$ list_input: Nur ein Fehler, keine Sorge

Ja, es ist die richtige Logik

Eigentlich funktioniert mein Code so:

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

Dann werde ich es mit Ihrem Code versuchen

Bitte benutzen Sie den ** Post Your Answer ** Button nur für aktuelle Antworten. Sie sollten Ihren ursprünglichen Beitrag [bearbeiten], um zusätzliche Informationen hinzuzufügen. DavidPostill vor 8 Jahren 0