Question Limitation nombre de caractères dans le Path

Plus d'informations
il y a 16 ans 7 mois #4972 par seb
Bonjour,

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.

Plus d'informations
il y a 16 ans 7 mois #4976 par seb
Réponse de seb sur le sujet Re:limitation nombre de caractères
Je viens de pensé à une possible solution.
Est ce que c'est possible de transformer automatiquement le résultat en variable?

Je m'explique.
Au lieux d'afficher

d:\dossier1\dossier2\dossier3\vacances.avi

Est ce qu'on peut afficher

$dossier2\dossier3\vacances.avi

avec $dossier2=d:\dossier1\dossier2

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.

Plus d'informations
il y a 16 ans 7 mois #4978 par PULVERAIL
Il me semble avoir compris ton histoire d'affichage B) . Par contre, est ce qu'il y a une limitation, je n'en ai pas la moindre idée parce que ça fait à peine un mois que j'ai commencé avec PowerShell.

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]\&quot;$a\&quot;[/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 :blush: , les \&quot;pros\&quot; de PowerShell viendront me corriger! :P

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.

Plus d'informations
il y a 16 ans 7 mois #4980 par seb
Réponse de seb sur le sujet Re:limitation nombre de caractères
J'ai découvert ce topic
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.

Plus d'informations
il y a 16 ans 7 mois #4981 par PULVERAIL
Alors je ne sais toujours pas si l'erreur est à ce niveau... Je cherche de mon côté mais rien de très concluant...

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.

Plus d'informations
il y a 16 ans 7 mois #4982 par seb
Réponse de seb sur le sujet Re:limitation nombre de caractères
Je ne pensais pas spécialement réutilisé le résultat pour automatiser la suppression des fichiers. Je préfères faire la suppression à la main pour vérifier que les fichiers ne sont pas autorisé.
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.

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