Problème d'arborescence trop longue

Fermé
Electorik - 29 oct. 2015 à 11:34
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 30 oct. 2015 à 16:45
Bonjour,

J'ai créer un fichier Batch qui permet de détecter les dossiers vides d'une arborescence et leur affecte une icône différente.
Le problème est le suivant :

"Le nom de répertoire X:\Commun\Projets\....\....\...102 est trop long."


Celà entraine un plantage du batch.
Quelqu'un aurait il une solution afin de contourner ce problème ?
Sachant que c'est un disqque partagé, et que je ne peut pas raccourcir l'arborescence ...

Merci,

Ci joint, le code du Batch :

@echo off
REM Récupere le path courant
set currentpath=%~dp0
rem sauvegarde la racine pour reouvrir explorer ici
set rootpath=%~dp0
REM Scanne les dossiers et sous dossiers (et les affiche)

for /f "delims=" %%a In ('dir /b/s/ad "%currentpath%"') Do call :compter %%a%
goto :fin
:compter
set localPath=%*
rem echo localPath="%localPath%
set /a nbFichiers=0
for /r "%localPath%" %%i in (*.*) do set /a nbFichiers+=1

rem on supprime le fichier desktop.ini
attrib -S -H "%localPath%"\Desktop.ini
del "%localPath%"\Desktop.inI
rem Si au moins un fichier est présent :
if %nbFichiers% GEQ 1 (

rem On désactive les attributs cachés et système
rem attrib /D /S -S "%localPath%"
attrib -S -H "%localPath%"\Desktop.ini

rem on supprime le fichier desktop.ini
REM del "%localPath%"\Desktop.ini
rem on recréé le fichichier desktop.ini en lui indiquant l'icone
echo [.ShellClassInfo] >> "%localPath%"\Desktop.ini
rem le ^ permet de spécifier que 0 est un texte et pas un nombre
echo IconResource=C:\temp\PRJ_COLOR_FOLDER\ICO\128\red.ico,^0>>"%localPath%"\Desktop.ini

rem On remet les attributs caché et systeme (/D /S pour faire aussi le dossier en cours)
@echo off

attrib +S +H "%localPath%"\Desktop.ini
attrib "%localPath%"\Desktop.ini
attrib /D /S +S "%localPath%"
)
goto :eof
:fin


2 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
30 oct. 2015 à 10:47
hello
quelle commande produit l'erreur ?
Associer le chemin trop long à une lettre de lecteur.
voir help subst
0
Bonjour,

Merci pour votre réponse.
Je ne suis pas informaticien et j'ai écris ce code en tâtonnant il y'a plus de 2 ans. Donc je ne me souviens plus comment cela fonctionne explicitement et je n'arrive pas à savoir exactement quelle commande produit l'erreur. Mais je pense fortement qu'il s'agisse de cette ligne :

for /r "%localPath%" %%i in (*.*) do set /a nbFichiers+=1

(ou peut être juste avant à l'affectation de %localpath) :

set localPath=%*

Concernant l'affectation d'un lecteur virtuel, cela pose un problème.
Car le batch scanne toute l'arborescence et je ne sais pas quels sont les chemins qui seront trop longs. C'est une arbo énorme ...
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
30 oct. 2015 à 16:45
enlever le @echo off pour voir exactement où
0