Question [Résolu]Après quelques itérations, plus rien...

Plus d'informations
il y a 13 ans 1 mois #14032 par chailloleau
Bonjour, je débute en ps, et en regardant un peu sur le web, j'ai réussi à faire un script pour surveiller un dossier, renommer, copier, renommer puis effacer les originaux...
Cela fonctionne 'mal' puisque après quelques passes qui sont ok, plus de copie, renommage et autre : il n'y a plus rien qui se passe...
Quelques conseils et analyse seraient les bienvenus !
[code:1]
$tempo = 5
$derniercheck = get-date
$rep =\"d:\Export CR\\"
$ficrep =\"d:\Export CR\*\"
$cible = \"d:\Cible\\"

cd $rep
$ancien = get-childitem $rep -r

while ($derniercheck -ne $null)
{
$actuel = get-childitem $rep -r
\"--> test : $actuel\"
if ($actuel -ne $nul) { # Il y a des fichiers présents dans le dossier
\"On déplace !\"
# On change les extensions des fichiers avant tout
get-childitem -Path *.xml |rename-item -NewName {$_.name -replace \".xml$\",\".cc1\"}
get-childitem -Path *.pdf |rename-item -NewName {$_.name -replace \".pdf$\",\".cc2\"}
# On supprime tous les autres fichiers
get-childitem * -exclude *.cc* -recurse | remove-item
#On copie les fichiers dans le répertoire cible (en théorie seulement les miens !)
Copy-Item $ficrep -Include *.cc* -Destination $cible -Recurse -Force
# On renomme
cd $cible
get-childitem -Path *.cc1 |rename-item -NewName {$_.name -replace \".cc1$\",\".xml\"}
get-childitem -Path *.cc2 |rename-item -NewName {$_.name -replace \".cc2$\",\".pdf\"}
# On efface les originaux en évitant ceux qui seraient arrivés entre temps
Get-ChildItem $rep -include *.cc* -recurse | remove-item

}
$derniercheck = get-date
\"$derniercheck\"
$actuel = \"\"
start-sleep -s $tempo
}[/code:1]

Message édité par: titeufcc, à: 20/02/13 18:42<br><br>Message édité par: titeufcc, à: 21/02/13 12:22
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 1 mois #14033 par Matthew BETTON
Bonsoir,

Pour ce que tu as à faire, la boucle 'While' reste discutable (attention aux \&quot;boucles éternelles\&quot;). As tu regardé la CPU pendant l'exécution de ton script ?

Peut être vaut-il mieux que tu te tournes vers les events WMI. Pour l'exemple, on en parle ici ou encore ici : Use PowerShell to Monitor for the Creation of New Files (et un peut partout sur le Web d'ailleurs, ton moteur de recherche préféré pourra te servir ;) ).

Cela fonctionne 'mal' puisque après quelques passes qui sont ok, plus de copie, renommage et autre : il n'y a plus rien qui se passe...


Quelques remarques sur ton code :

[code:1]if ($actuel -ne $nul)[/code:1]

$nul : il manque un \&quot;l\&quot; =&gt; $null

Ici

[code:1]$actuel = \&quot;\&quot;[/code:1]

Tu ré initialises la variable '$actuel' avec un 'String' vide. Ce n'est donc pas une valeur 'null'.

[code:1]PS C:\&gt;$actuel = \&quot;\&quot;

PS C:\&gt;$actuel -eq $null
False

PS C:\&gt;$actuel -eq \&quot;\&quot;
True[/code:1]

Comme tu fais dans le 'if' de la boucle un test sur la valeur $null, j'initialiserai plutôt '$actuel' avec la valeur $null.

@ +

Matthew<br><br>Message édité par: Matthew BETTON, à: 20/02/13 21:13

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 1 mois #14034 par chailloleau
Merci pour toutes ces informations...

Je regardes les events WMI

Christophe

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 1 mois #14038 par chailloleau
Il manquait un retour dans le bon dossier... ;)

Donc, en fait, cela ne fonctionnait que lors de la première itération seulement ! :(

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 1 mois #14059 par Matthew BETTON
titeufcc écrit:

Il manquait un retour dans le bon dossier... ;)

Donc, en fait, cela ne fonctionnait que lors de la première itération seulement ! :(


Effectivement, je n'avais pas vu le

[code:1]
cd $cible[/code:1]

dans ton bloc 'if'.

:whistle:

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.048 secondes
Propulsé par Kunena