Question
Limitation nombre de caractères dans le Path
- seb
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
Je suis en train de faire un script qui recherche les fichiers .avi et .mp3 sur un serveur de fichiers
et qui marque le résultat dans un fichier .txt
Pour le moment le script donne ça
[code:1]$date=get-date -uformat \"%d-%m-%y\"
$old=(get-date).adddays(-7)
get-date >> c:\search\avi-mp3-$date.txt
Get-ChildItem d:\ -Recurse -include *.mp3,*.avi >> c:\search\avi-mp3-$date.txt
get-date >> c:\search\avi-mp3-$date.txt
get-childitem c:\search -include *.* -recurse |Where {$_.LastWriteTime -le $old} | remove-item -force[/code:1]
Le script fait bien ce que je lui demande mais j'ai plein d'erreur comme ça
Get-ChildItem : Le chemin d'accès spécifié, le nom de fichier ou les deux sont trop longs. Le nom de fichier qualifié complet doit comprendre moins de 260 caractères et le nom du répertoire moins de 248 caractères.
Au niveau de ligne : 1 Caractère : 14
+ Get-ChildItem <<<< d:\ -Recurse -include *.mp3,*.avi >> c:\search\avi-mp3-$date.txt
Je suppose qu'à chaque erreur il y a un fichier correspondant à ma recherche mais que le chemin est
trop long pour s'afficher dans mon fichier de réponse. Si je laisse ça comme ça il suffit que mes
utilisateurs créés plein de sous-répertoire pour passer à travers mon script. Pas cool.
Comment je peux faire pour contourner cette limitation?<br><br>Message édité par: Arnaud, à: 17/08/09 16:55
Connexion ou Créer un compte pour participer à la conversation.
- seb
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
Est ce que c'est possible de transformer automatiquement le résultat en variable?
Je m'explique.
Au lieux d'afficher
Est ce qu'on peut afficherd:\dossier1\dossier2\dossier3\vacances.avi
avec $dossier2=d:\dossier1\dossier2$dossier2\dossier3\vacances.avi
On pourrait créé les variables en début de script, ça limiterait déjà pas mal le nombre de caractères.<br><br>Message édité par: sebastien4012, à: 24/07/09 14:37
Connexion ou Créer un compte pour participer à la conversation.
- PULVERAIL
- Hors Ligne
- Membre junior
-
- Messages : 36
- Remerciements reçus 0
Il est tout à fait possible d'affecter des path à des variables au début de ton script :
[code:1]$a = C:\Temp\myDir[/code:1]
Ensuite si tu choisis de l'afficher entre des doubles quotes :
[code:1]\"$a\"[/code:1]
C'est la valeur de la variable (i.e. le path que tu as affecté à la variable) qui sera affichée. A contrario, si tu utilises de simples quotes :
[code:1]'$a'[/code:1]
C'est le nom de la variable (i.e. $a) qui sera affichée.
Je ne sais pas si c'est la réponse que tu attendais, mais si jamais je me trompe
Message édité par: skeleton18, à: 24/07/09 15:20<br><br>Message édité par: skeleton18, à: 24/07/09 15:21
Connexion ou Créer un compte pour participer à la conversation.
- seb
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
powershell-scripting.com/index.php?optio...;id=3193&catid=5
et c'est ce vers quoi je voulais tendre à plus ou moins long terme. Par contre il y a aussi le même message d'erreur.
@skeleton18
Merci pour ta réponse
J'utilise déjà ce que tu expliques avec une variable $date et $old.
ce que j'aimerais c'est voir les variables des répertoires dans le fichier txt.
Voila à quoi ressemble le fichier résultat
[code:1] Répertoire : Microsoft.PowerShell.Core\FileSystem:: D:\Dossier1\dossier2\dossier3\dossier4\dossier5\dossier6\dossier7
Mode LastWriteTime Length Name
----
----
07/07/2005 11:22 6550016 1.avi
Répertoire : Microsoft.PowerShell.Core\FileSystem:: D:\Dossier1\dossier2\dossier3\dossier4\dossier5\dossier6\dossier7\dossier8
Mode LastWriteTime Length Name
----
----
13/01/2007 00:29 1177728 1.mp3
13/01/2007 00:29 723072 10.mp3
[/code:1]
Est ce que c'est possible de la changer en
[code:1]
Répertoire : Microsoft.PowerShell.Core\FileSystem::$dossier5\dossier6\dossier7
Mode LastWriteTime Length Name
----
----
07/07/2005 11:22 6550016 1.avi
Répertoire : Microsoft.PowerShell.Core\FileSystem::$dossier2\dossier3\dossier4\dossier5\dossier6\dossier7\dossier8
Mode LastWriteTime Length Name
----
----
13/01/2007 00:29 1177728 1.mp3
13/01/2007 00:29 723072 10.mp3 [/code:1]
Si on peut avoir ce résultat, on réduit le nom des répertoires et donc peut être l'erreur (si le problème est bien à ce niveau).
Connexion ou Créer un compte pour participer à la conversation.
- PULVERAIL
- Hors Ligne
- Membre junior
-
- Messages : 36
- Remerciements reçus 0
Pour ce qui de la transformation de ton fichier, tu peux le faire grâce à un Get-Content qui te retourne le contenu du fichier ligne par ligne en tant que chaine de caractère. Donc il te suffirait de les manipuler avec des replace.
Par contre, je ne veux pas trop m'avancer, mais je pense que ça ne te servirait à rien parce que tu ne pourrais pas les utiliser dans tes fonctions. Quand tu liras la chaine $dossier2\dossier3\myFile.avi, ce ne serait qu'une chaine de caractères et non un path...
J'ai essayé de faire quelques tests mais sans résultats.
A confirmer...
Connexion ou Créer un compte pour participer à la conversation.
- seb
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
Si un projet à besoin d'une vidéo de 700Mo, je ne vais pas la supprimer, par contre si c'est un film, il n'a rien à faire là.
De plus je pense que la variable pourrais être vu comme n'importe quel variable d'environnement si j'ai besoin de la réutilisé.
Powershell sait que $dossier1=d:\dossier1 donc je pense qu'il l'utilisera de la même manière.
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Limitation nombre de caractères dans le Path