1 votes

Powershell Renommer tous les fichiers d'un dossier avec compteur

J'écris un script qui va renommer tous les fichiers d'un dossier à un nom donné (param) avec un compteur croissant. Je veux que le compteur s'imprime avec 3 chiffres (001, 002, etc). Mon code semble fonctionner mais il me dit que tous mes fichiers n'existent pas. Je n'arrive pas non plus à déterminer correctement les 3 chiffres. Toute aide est la bienvenue !

param(
    [string]$NAME,
    [string]$FOLDER
    )

$NAME = "SEATTLE"
$FOLDER = "C:\Users\user00\Documents\Datasheets"
$files = Get-ChildItem -Path $FOLDER -Recurse 
$counter = 001

foreach ($file in $files){
    Rename-Item $file.Name -NewName $NAME
    $counter++
}

2voto

postanote Points 3762

C'est à cela que sert le rembourrage. Il s'agit d'une pratique courante, bien documentée à de nombreux endroits.

Il suffit de faire une recherche sur votre cas d'utilisation pour obtenir de nombreux exemples.

Remplissage de chiffres powershell

En utilisant PowerShell pour renommer une partie d'un fichier et ajouter une auto-incrémentation, quel contenu dans mon script manque-t-il pour provoquer une incrémentation de mes chiffres ?

$i = 1
Dir xyz* | 
Rename-Item –NewName {$_.name –replace "0101",("01{0:D2}" -f $script:i++)}

Formatage des zéros non significatifs dans PowerShell

# Examples:
"{0:0000}" -f 4

# Results
0004

"{0:0000}" -f 45

# Results
0045

"{0:0000}" -f 456

# Results
0456

"{0:0000}" -f 4567

# Results
4567

1..10 | 
foreach {
    $i="{0:0000}" -f $_
    $dir="c:\test\Target_$i"
    $file="file_$i.txt"
    $target=Join-Path -Path $dir -ChildPath $file
    Write-Host "Updating $target"
}

# Results
<#
Updating c:\test\Target_0001\file_0001.txt
Updating c:\test\Target_0002\file_0002.txt
Updating c:\test\Target_0003\file_0003.txt
Updating c:\test\Target_0004\file_0004.txt
Updating c:\test\Target_0005\file_0005.txt
Updating c:\test\Target_0006\file_0006.txt
Updating c:\test\Target_0007\file_0007.txt
Updating c:\test\Target_0008\file_0008.txt
Updating c:\test\Target_0009\file_0009.txt
Updating c:\test\Target_0010\file_0010.txt
#>

0voto

Keith Miller Points 6004
$NAME = "SEATTLE"
$FOLDER = "C:\Users\user00\Documents\Datasheets"

[ref]$i = 1

GEt-ChildItem -Path $FOLDER -File -Recurse |
   Rename-Item -NewName {'{0}{1:d3}{2}' -f $NAME, $i.value++, $_.Extension}

Le site opérateur de format ( -f ) construit la nouvelle crinière à partir de votre nom de base : {0}=$NAME le compteur a été garni à 3 endroits : {1:d3}=$i.Value et l'extension du fichier à renommer : {2}=$_.Extension

$i doit être considéré comme [réf] et référencée comme $i.Value afin d'être incrémenté à partir de la portée du bloc script.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X