A voir également:
- Recuperation nom dossier bat
- [VBS] Compter et Récuperer nom dossier ✓ - Forum - VB / VBA
- Vba récupérer nom fichier d'un dossier ✓ - Forum - VB / VBA
- Récupérer nom fichier avec 1 fichier BAT ✓ - Forum - Windows
- VBA Récupérer le nom du fichier ✓ - Forum - VB / VBA
- VBA : récupérer chemin de répertoire ✓ - Forum - VB / VBA
28 réponses
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Bonjour,
Quand tu postes du code merci d'utiliser les balises de code.
Voilà comment remonter l'arborescence pour obtenir 1500 :
Pour remonter plus haut il faut augmenter la variable %level%
EDIT : Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Quand tu postes du code merci d'utiliser les balises de code.
Voilà comment remonter l'arborescence pour obtenir 1500 :
@echo off setlocal enableextensions enabledelayedexpansion set cible=s:\ENTREPRISE\TKMI\01 CLIENTS\NOM CLIENT\1500\02_CONCEPTION\ set level=2 if "!cible:~-1!"=="\" (set cible=!cible:~0,-1!) for /L %%E in (1,1,%level%) do ( for /f "delims=" %%A in ("!cible!") do ( set cible=!cible:\%%~nA=! set parent=%%~nA ) ) echo Parent = !parent! pause exit
Pour remonter plus haut il faut augmenter la variable %level%
EDIT : Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Ok pour la cible, ce n'est pas un problème il suffit de mettre :
J'ai supprimé quelques variables qui n'avaient pas vraiment d'utilité.
Concernant le problème de copie qui ne se fait pas, pourrais-tu rajouter un echo devant le copy, puis lancer le script et me dire ce qui s'affiche dans l'invite de commandes.
set cible=%~dp0
J'ai supprimé quelques variables qui n'avaient pas vraiment d'utilité.
Concernant le problème de copie qui ne se fait pas, pourrais-tu rajouter un echo devant le copy, puis lancer le script et me dire ce qui s'affiche dans l'invite de commandes.
echo copy "S:\TKMI\ressources\Z_.SLDPRT" "!file!"
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Pour utiliser les balises de code, merci de lire ceci :
https://www.commentcamarche.net/faq/4622-ccm-astuces-et-conseils-pour-la-redaction#code
https://www.commentcamarche.net/faq/4622-ccm-astuces-et-conseils-pour-la-redaction#code
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Voilà où j'en suis, dis-moi ce qui reste à améliorer :
J'ai intégré la possibilité de désactiver la date, j'ai également mis en place un fichier journal basique.
Concernant la présence ou non d'un numéro d'affaire, le script sait gérer les 2 situations (à condition que l'affaire soit toujours composé de 4 chiffres lorsqu'elle est mentionnée, et non de 3 ou de 5).
J'ai certainement oublié des détails, la suite au prochain épisode ;)
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
@echo off setlocal enableextensions enabledelayedexpansion Mode con cols=120 lines=20 chcp 65001 >nul color 0A : -------------------------------------------------------------------------------------- : on définit les variables : -------------------------------------------------------------------------------------- set "ressources=%~dp0" set "prefixe=Z_" set level=5 if /i "%~n0"=="SLDPRT" (set "mini=10000" & set "preindex=P") if /i "%~n0"=="SLDASM" (set "mini=20000" & set "preindex=A") : -------------------------------------------------------------------------------------- : on vérifie si le template et son dossier existent ou pas : -------------------------------------------------------------------------------------- cd /d %ressources% || exit /b 1 if not exist "%prefixe%.%~n0" (exit /b 1) : -------------------------------------------------------------------------------------- : on définit le dossier de destination : -------------------------------------------------------------------------------------- if not "A%~1A"=="AA" (set "cible=%~1" & goto :suite) :debut set "cible=" cls & echo. & set /p cible="### Veuillez indiquer le dossier de destination : " if not defined cible (goto :debut) if "!cible:~-1!"=="\" (set cible=!cible:~0,-1!) if not exist "!cible!" (goto :debut) : -------------------------------------------------------------------------------------- : on vérifie s'il s'agit d'un lecteur réseau : -------------------------------------------------------------------------------------- :suite for /f "tokens=1 delims=\" %%A in ("!cible!") do set "lettre=%%A" set "mappage=" for /f "delims=" %%A in ('net use ^| find "!lettre!"') do set "mappage=%%A" : -------------------------------------------------------------------------------------- : on récupère le chemin UNC (à partir des mappages réseaux) : -------------------------------------------------------------------------------------- set "UNC=" if defined mappage (for /f "tokens=3" %%A in ("!mappage!") do set "UNC=%%A") if defined UNC ( set "chemin=!UNC!\!cible:~3!" if "!chemin:~-1!"=="\" (set "chemin=!chemin:~0,-1!") if "!lettre!"=="P:" (set level=5) if "!lettre!"=="Z:" (set level=5) ) else (set "chemin=!cible!") : -------------------------------------------------------------------------------------- : on récupère le nom du client (via un découpage de l'arborescence) : -------------------------------------------------------------------------------------- set "client=" for /f "tokens=%level% delims=\" %%A in ("!chemin!") do set "client=%%A" if defined client (set "client=!client:~0,3!_") : -------------------------------------------------------------------------------------- : on récupère le numéro d'affaire (via un découpage de l'arborescence) : -------------------------------------------------------------------------------------- set /a level+=1 for /f "tokens=%level% delims=\" %%A in ("!chemin!") do set "affaire=%%A" set "affaire=!affaire:~0,4!_" echo !affaire! | findstr /r "^[0-9][0-9][0-9][0-9]" >nul || set "affaire=" : -------------------------------------------------------------------------------------- : on confirme les informations : -------------------------------------------------------------------------------------- cls & echo. & echo ^>^>^> Dossier contenant le template ==^>^> %ressources% echo. & echo ^>^>^> Dossier de destination ==^>^> !cible! echo. & echo. & set /p confirm="### Appuyez sur la touche Y pour confirmer " if /i "%confirm%"=="Y" (echo.) else (exit /b 1) : -------------------------------------------------------------------------------------- : on demande si on doit intégrer la date du jour dans le nom du ou des fichiers : -------------------------------------------------------------------------------------- :question1 set "demande=" cls & echo. & set /p demande="### Voulez-vous intégrer la date du jour dans les noms de fichiers ? (oui par défaut) [o-n] : " if not defined demande (set "AAAAMMJJ=%date:~6,4%%date:~3,2%%date:~0,2%_" & goto :question2) if "%demande%"=="o" (set "AAAAMMJJ=%date:~6,4%%date:~3,2%%date:~0,2%_" & goto :question2) if "%demande%"=="n" (set "AAAAMMJJ=" & goto :question2) goto :question1 : -------------------------------------------------------------------------------------- : on définit la quantité de fichiers à générer : -------------------------------------------------------------------------------------- :question2 set "quantite=" echo. & set /p quantite="### Veuillez indiquer la quantité de fichier à générer ( valeur par défaut = 1) : " if not defined quantite (set quantite=1) echo. : -------------------------------------------------------------------------------------- : on lance la procédure de génération des fichiers : -------------------------------------------------------------------------------------- >> %~n0.log echo. set position=1 if defined prefixe (set /a position+=1) if defined client (set /a position+=1) if defined affaire (set /a position+=1) if defined AAAAMMJJ (set /a position+=1) for /L %%A in (1,1,%quantite%) do call :Boucle %position% : -------------------------------------------------------------------------------------- : fin du script : -------------------------------------------------------------------------------------- echo. & echo. & pause exit : -------------------------------------------------------------------------------------- : on construit le nom du fichier : -------------------------------------------------------------------------------------- :Boucle for /f "tokens=%1 delims=_" %%A in ('2^>nul dir /b "!cible!\%prefixe%!client!!affaire!%AAAAMMJJ%%preindex%*.%~n0"') do set "string=%%A" set "index=!string:~1!" set /a index+=1 if !index! LSS %mini% (set index=%mini%) set "index=%preindex%!index!_" set "file=%prefixe%!client!!affaire!%AAAAMMJJ%!index!.%~n0" : -------------------------------------------------------------------------------------- : on copie le fichier dans la destination : -------------------------------------------------------------------------------------- >nul copy "%prefixe%.%~n0" "!cible!\!file!" && call :logging "!file!" goto :eof : -------------------------------------------------------------------------------------- : on inscrit le fichier dans le journal : -------------------------------------------------------------------------------------- :logging echo. & echo ^>^>^> Le fichier %~1 a été créé set "heure=!time:~0,2!" set "heure=0!heure: =!" set "heure=!heure:~-2!:!time:~3,2!:!time:~6,2!" >> %~n0.log echo Le %date:~6,4%%date:~3,2%%date:~0,2% à !heure! ^>^>^> %~1 goto :eof rem
J'ai intégré la possibilité de désactiver la date, j'ai également mis en place un fichier journal basique.
Concernant la présence ou non d'un numéro d'affaire, le script sait gérer les 2 situations (à condition que l'affaire soit toujours composé de 4 chiffres lorsqu'elle est mentionnée, et non de 3 ou de 5).
J'ai certainement oublié des détails, la suite au prochain épisode ;)
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
maxime
>
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
l'utilisation de la commande c'est pour moi mais la création des fichiers c'est d'autres personnes aussi
Je souhaiterais laisser le code dans le script mais de quoi permuter oui ou non
Je souhaiterais laisser le code dans le script mais de quoi permuter oui ou non
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Voilà la version correspondante :
Pour le choix de la date ou non, il faut commenter une des 2 lignes indiquées.
@echo off setlocal enableextensions enabledelayedexpansion Mode con cols=120 lines=20 chcp 65001 >nul color 0A : -------------------------------------------------------------------------------------- : on définit les variables : -------------------------------------------------------------------------------------- set "ressources=%~dp0" set "prefixe=Z_" set "template=%prefixe%.%~n0" set "level=5" &:: ce level est le level par défaut if /i "%~n0"=="SLDPRT" (set "mini=10000" & set "preindex=P") if /i "%~n0"=="SLDASM" (set "mini=20000" & set "preindex=A") : -------------------------------------------------------------------------------------- : on définit la date - merci de mettre en commentaire une seule des 2 lignes suivantes : -------------------------------------------------------------------------------------- set "AAAAMMJJ=%date:~6,4%%date:~3,2%%date:~0,2%_" rem set "AAAAMMJJ=" : -------------------------------------------------------------------------------------- : on vérifie si le template et son dossier existent ou pas : -------------------------------------------------------------------------------------- pushd "%ressources%" || exit /b 1 if not exist "%prefixe%.%~n0" (exit /b 1) : -------------------------------------------------------------------------------------- : on définit le dossier de destination : -------------------------------------------------------------------------------------- if not "A%~1A"=="AA" (set "cible=%~1" & goto :suite) :debut set "cible=" cls & echo. & set /p cible="### Veuillez indiquer le dossier de destination : " if not defined cible (goto :debut) if "!cible:~-1!"=="\" (set cible=!cible:~0,-1!) rem if not exist "!cible!" (goto :debut) : -------------------------------------------------------------------------------------- : on vérifie s'il s'agit d'un lecteur réseau : -------------------------------------------------------------------------------------- :suite for /f "tokens=1 delims=\" %%A in ("!cible!") do set "lettre=%%A" if not "!lettre:~1,1!"==":" (set "lettre=" & set level=5) &:: ce level concerne uniquement les chemins UNC set "mappage=" if defined lettre (for /f "delims=" %%A in ('net use ^| find "!lettre!"') do set "mappage=%%A") : -------------------------------------------------------------------------------------- : on récupère le chemin UNC (à partir des mappages réseaux) : -------------------------------------------------------------------------------------- set "UNC=" if defined mappage (for /f "tokens=3" %%A in ("!mappage!") do set "UNC=%%A") if defined UNC ( set "chemin=!UNC!\!cible:~3!" if "!chemin:~-1!"=="\" (set "chemin=!chemin:~0,-1!") if "!lettre!"=="P:" (set "level=5") if "!lettre!"=="Z:" (set "level=5") ) else (set "chemin=!cible!") : -------------------------------------------------------------------------------------- : on récupère le nom du client (via un découpage de l'arborescence) : -------------------------------------------------------------------------------------- set "client=" for /f "tokens=%level% delims=\" %%A in ("!chemin!") do set "client=%%A" if defined client (set "client=!client:~0,3!_") : -------------------------------------------------------------------------------------- : on récupère le numéro d'affaire (via un découpage de l'arborescence) : -------------------------------------------------------------------------------------- set /a level+=1 for /f "tokens=%level% delims=\" %%A in ("!chemin!") do set "affaire=%%A" set "affaire=!affaire:~0,4!_" echo !affaire! | findstr /r "^[0-9][0-9][0-9][0-9]" >nul || set "affaire=" : -------------------------------------------------------------------------------------- : on confirme les informations : -------------------------------------------------------------------------------------- cls & echo. & echo ^>^>^> Dossier contenant le template ==^>^> %ressources% echo. & echo ^>^>^> Dossier de destination ==^>^> !cible! echo. & echo. & set /p confirm="### Appuyez sur la touche Y pour confirmer " if /i "%confirm%"=="Y" (echo.) else (exit /b 1) : -------------------------------------------------------------------------------------- : on définit la quantité de fichiers à générer : -------------------------------------------------------------------------------------- set "quantite=" cls & echo. & set /p quantite="### Veuillez indiquer la quantité de fichier à générer ( valeur par défaut = 1) : " if not defined quantite (set quantite=1) echo. : -------------------------------------------------------------------------------------- : on lance la procédure de génération des fichiers : -------------------------------------------------------------------------------------- >> %~n0.log echo. set position=1 if defined prefixe (set /a position+=1) if defined client (set /a position+=1) if defined affaire (set /a position+=1) if defined AAAAMMJJ (set /a position+=1) for /L %%A in (1,1,%quantite%) do call :Boucle %position% : -------------------------------------------------------------------------------------- : fin du script : -------------------------------------------------------------------------------------- if exist "%TMP%\%template%" (del /f "%TMP%\%template%") echo. & echo. & pause exit : -------------------------------------------------------------------------------------- : on construit le nom du fichier : -------------------------------------------------------------------------------------- :Boucle for /f "tokens=%1 delims=_" %%A in ('2^>nul dir /b /on "!cible!\%prefixe%!client!!affaire!%AAAAMMJJ%%preindex%*.%~n0"') do set "string=%%A" set "index=!string:~1!" set /a index+=1 if !index! LSS %mini% (set index=%mini%) set "index=%preindex%!index!_" set "file=%prefixe%!client!!affaire!%AAAAMMJJ%!index!.%~n0" : -------------------------------------------------------------------------------------- : on copie le fichier dans la destination : -------------------------------------------------------------------------------------- if not exist "%TMP%\%template%" (>nul robocopy "!CD!" "%TMP%" "%template%") >nul copy /y "%TMP%\%template%" "%TMP%\!file!" >nul robocopy "%TMP%" "!cible!" "!file!" if exist "%TMP%\!file!" (del /f "%TMP%\!file!") call :logging "!file!" goto :eof : -------------------------------------------------------------------------------------- : on inscrit le fichier dans le journal : -------------------------------------------------------------------------------------- :logging echo. & echo ^>^>^> Le fichier %~1 a été créé set "heure=!time:~0,2!" set "heure=0!heure: =!" set "heure=!heure:~-2!:!time:~3,2!:!time:~6,2!" >> %~n0.log echo Le %date:~6,4%%date:~3,2%%date:~0,2% à !heure! ^>^>^> %~1 goto :eof rem
Pour le choix de la date ou non, il faut commenter une des 2 lignes indiquées.
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Si tu veux une interface plus visuelle, il suffit d'utiliser quelques commandes externes prévues à cet effet.
Grâce à ces commandes, j'ai créé une version un peu plus "fenêtrée" qui ressemble plus à Windows.
Le code est trop long pour être posté tel quel sur le forum, donc je l'ai mis sur mon Pastebin :
https://pastebin.com/2GrBJZmJ
Tu me diras ce que tu en penses.
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Grâce à ces commandes, j'ai créé une version un peu plus "fenêtrée" qui ressemble plus à Windows.
Le code est trop long pour être posté tel quel sur le forum, donc je l'ai mis sur mon Pastebin :
https://pastebin.com/2GrBJZmJ
Tu me diras ce que tu en penses.
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
maxime
Bonjour barnabé ,
excuses moi pour le retard de réponse .
J'ai bien recu le code .
Tout fonctionne super bien je ne passe plus que pas ca pour créer les fichier et c'est vraiment super
Merci
excuses moi pour le retard de réponse .
J'ai bien recu le code .
Tout fonctionne super bien je ne passe plus que pas ca pour créer les fichier et c'est vraiment super
Merci
MAXIME
C'est super merci ca fonctionne au top !
Un tout grand merci
Est ce que toute fois on peut à la place d'une cible fixe encoder manuellement , intégrer dans cet variable la récupération de la cible complète ou ce trouve le ficher .bat ?
D'avance Merci
Un tout grand merci
Est ce que toute fois on peut à la place d'une cible fixe encoder manuellement , intégrer dans cet variable la récupération de la cible complète ou ce trouve le ficher .bat ?
D'avance Merci
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Oui bien sûr :
EDIT : Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique
@echo off setlocal enableextensions enabledelayedexpansion set cible=%~dp0 set level=2 if "!cible:~-1!"=="\" (set cible=!cible:~0,-1!) for /L %%E in (1,1,%level%) do ( for /f "delims=" %%A in ("!cible!") do ( set cible=!cible:\%%~nA=! set parent=%%~nA ) ) echo Parent = !parent! pause exit
EDIT : Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique
MAXIME
>
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Je m'excuse mais je ne vois pas ou mettre ca ... cela ne fonctionne pas sur mon code
je ne vois pas comment mettre les balises aussi
@echo off
setlocal enableextensions enabledelayedexpansion
set index=0
set d=%date:~6,2%
set m=%date:~3,2%
set j=%date:~0,2%
set nombre=1000
set ext=SLDPRT
set prefixe=Z_
set sep=_
set cible=%~dp0
set level=2
if "!cible:~-1!"=="\" (set cible=!cible:~0,-1!)
for /L %%E in (1,1,%level%) do (
for /f "delims=" %%A in ("!cible!") do (
set cible=!cible:\%%~nA=!
set parent=%%~nA
)
)
echo Parent = !parent!
set parent=!parent:~0,4!
set FOLDER=%parent%
:Boucle
if not exist %prefixe%%FOLDER%%sep%%d%%m%%j%_%nombre%_.%ext% goto Copie
set /a nombre+=+1
goto Boucle
:Copie
copy %prefixe%.%ext% %prefixe%%FOLDER%%sep%%d%%m%%j%_%nombre%_.%ext%
je ne vois pas comment mettre les balises aussi
@echo off
setlocal enableextensions enabledelayedexpansion
set index=0
set d=%date:~6,2%
set m=%date:~3,2%
set j=%date:~0,2%
set nombre=1000
set ext=SLDPRT
set prefixe=Z_
set sep=_
set cible=%~dp0
set level=2
if "!cible:~-1!"=="\" (set cible=!cible:~0,-1!)
for /L %%E in (1,1,%level%) do (
for /f "delims=" %%A in ("!cible!") do (
set cible=!cible:\%%~nA=!
set parent=%%~nA
)
)
echo Parent = !parent!
set parent=!parent:~0,4!
set FOLDER=%parent%
:Boucle
if not exist %prefixe%%FOLDER%%sep%%d%%m%%j%_%nombre%_.%ext% goto Copie
set /a nombre+=+1
goto Boucle
:Copie
copy %prefixe%.%ext% %prefixe%%FOLDER%%sep%%d%%m%%j%_%nombre%_.%ext%
MAXIME
Super encore une fois c'est top !
Je ne sais pas si ma nouvelle demande à encore sa place sur ce post / sujet ?
je souhaiterais savoir si le fichier copié selon la nouvelle règle de nommage peut se trouver a un endroit diffèrent que la commande .bat ?
Une idée ?
Je ne sais pas si ma nouvelle demande à encore sa place sur ce post / sujet ?
je souhaiterais savoir si le fichier copié selon la nouvelle règle de nommage peut se trouver a un endroit diffèrent que la commande .bat ?
Une idée ?
MAXIME
Bonjour ,
L'idée de cette commande .bat est de créer des fichier avec un nommage particulier a partir de fichier "templates"
Je souhaiterais que les fichiers sources soient stockés a un endroit mais que la commande bat peut importe ou elle se trouve aille chercher les fichiers "templates" en question
Z_.sldprt (s:TKMI\ressources)
Creation_prt.bat (s:TKMI\01_CLIENTS\ERM\1250\)
Pour que simplement je n'ai qu'a copier coller le ficher bat sans me soucié des fichiers "templates"
Voila j'espère avoir été clair dans ma demande
L'idée de cette commande .bat est de créer des fichier avec un nommage particulier a partir de fichier "templates"
Je souhaiterais que les fichiers sources soient stockés a un endroit mais que la commande bat peut importe ou elle se trouve aille chercher les fichiers "templates" en question
Z_.sldprt (s:TKMI\ressources)
Creation_prt.bat (s:TKMI\01_CLIENTS\ERM\1250\)
Pour que simplement je n'ai qu'a copier coller le ficher bat sans me soucié des fichiers "templates"
Voila j'espère avoir été clair dans ma demande
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Ton script pourrait se résumer ainsi :
@echo off setlocal enableextensions enabledelayedexpansion set nombre=1000 set cible=S:\ENTREPRISE\TKMI\01 CLIENTS\NOM CLIENT\1500\02_CONCEPTION\ cd /d %cible% || exit /b 1 if "!cible:~-1!"=="\" (set cible=!cible:~0,-1!) :remonter for /f "delims=" %%A in ("!cible!") do ( set cible=!cible:\%%~nA=! set FOLDER=%%~nA ) cls & echo Dossier = !FOLDER! set FOLDER=!FOLDER:~0,4! echo.!FOLDER! | findstr /r "^[0-9][0-9][0-9][0-9]" >nul || goto :remonter :Boucle set file=Z_!FOLDER!_%date:~6,4%%date:~3,2%%date:~0,2%_!nombre!_.SLDPRT if exist "!file!" (set /a nombre+=1 & goto :Boucle) copy "S:\TKMI\ressources\Z_.SLDPRT" "!file!" pause exit
MAXIME
Merci Barnabé, mais la cible change a chaque fois que je copie la commande .bat et donc je ne la connais pas à l'avance
Je vois que le code que tu me propose est nettement plus épuré que l'initial .
En tant que novice j'ai un peu de mal a m'y retrouvé
avec le nouveau code ça ne copie plus les fichiers.
L'invite de commande affiche le dossier ciblé uniquement sans copies
Je vois que le code que tu me propose est nettement plus épuré que l'initial .
En tant que novice j'ai un peu de mal a m'y retrouvé
avec le nouveau code ça ne copie plus les fichiers.
L'invite de commande affiche le dossier ciblé uniquement sans copies
MAXIME
Bonsoir Barnabé ,
Je m'aperçois que ma demande n'est pas aussi structurée qu'elle devrait l'être .
Je m'excuses
Je corrige donc celle ci .
Je souhaiterais pour celle ci :
- que la commande bat soit unique et non a copier un peu partout dans le réseau
(de plus je pourrais l'intégrer facilement au menu contextuel)
- les fichiers templates quand a eux peuvent être au même endroit que la commande bat (ressources)
- que les variables "set" soient si possible l'une a la suite des autres (facilité de lecture pour une personne novice)
- que lors de l'ouverture de l'invite de commande je copie/colle la cible ou j'ai envie de copier par le bat les fichiers avec la règle de nommage
(qqch de conversationnel qui me demande ou je veux copier les fichier)
Je crois que c'est le mieux plutôt que de copier plein de fichier cmd partout
Le type de fichier est vraiment multiple donc si je duplique les cmd bat, le simple nom de celle ci pourrait servir pour l'extension du fichier copié (j'espère que c'est assez clair sur ce point)
- pouvoir ciblé le début ou un dossier en particulier dans une cible de répertoire
- afficher la date dans le nom du fichier sur le format AAMMJJ / YYMMDD
- mettre un numéro incrémentiel
- pour l'extension du fichier copié que celle si soit une variable idéalement le nom du fichier bat
exemple :
SLDPRT.BAT ----> Z_ERM_201220_1001_.SLDPRT
SLDASM.BAT ----> Z_ERM_201220_1001_.SLDASM
0 1 2 3 4
Chaque élément entre deux underscore est une variable en particulier .
0 = préfixe
1 = 3 premières lettre du dossier ciblé ou dossier ciblé (en esperant que c'est possible)
2= date de création selon format AAMMJJ
3= numéro incrémentiel à 4 digit (possibilité d'étendre à 5)
4= extension du fichier copié
Voila j'espère c'est plus clair
D'avance merci
je vais prendre en compte ta demande pour mettre les balises lors de différent copié coller
Bonne soirée
Max
Je m'aperçois que ma demande n'est pas aussi structurée qu'elle devrait l'être .
Je m'excuses
Je corrige donc celle ci .
Je souhaiterais pour celle ci :
- que la commande bat soit unique et non a copier un peu partout dans le réseau
(de plus je pourrais l'intégrer facilement au menu contextuel)
- les fichiers templates quand a eux peuvent être au même endroit que la commande bat (ressources)
- que les variables "set" soient si possible l'une a la suite des autres (facilité de lecture pour une personne novice)
- que lors de l'ouverture de l'invite de commande je copie/colle la cible ou j'ai envie de copier par le bat les fichiers avec la règle de nommage
(qqch de conversationnel qui me demande ou je veux copier les fichier)
Je crois que c'est le mieux plutôt que de copier plein de fichier cmd partout
Le type de fichier est vraiment multiple donc si je duplique les cmd bat, le simple nom de celle ci pourrait servir pour l'extension du fichier copié (j'espère que c'est assez clair sur ce point)
- pouvoir ciblé le début ou un dossier en particulier dans une cible de répertoire
- afficher la date dans le nom du fichier sur le format AAMMJJ / YYMMDD
- mettre un numéro incrémentiel
- pour l'extension du fichier copié que celle si soit une variable idéalement le nom du fichier bat
exemple :
SLDPRT.BAT ----> Z_ERM_201220_1001_.SLDPRT
SLDASM.BAT ----> Z_ERM_201220_1001_.SLDASM
0 1 2 3 4
Chaque élément entre deux underscore est une variable en particulier .
0 = préfixe
1 = 3 premières lettre du dossier ciblé ou dossier ciblé (en esperant que c'est possible)
2= date de création selon format AAMMJJ
3= numéro incrémentiel à 4 digit (possibilité d'étendre à 5)
4= extension du fichier copié
Voila j'espère c'est plus clair
D'avance merci
je vais prendre en compte ta demande pour mettre les balises lors de différent copié coller
Bonne soirée
Max
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Les besoins sont déjà un peu plus clairs, je vais voir ce que je peux faire.
Un point à éclaircir : - pouvoir ciblé le début ou un dossier en particulier dans une cible de répertoire
Ce matin il s'agissait de récupérer un numéro à 4 chiffres, maintenant j'ai du mal à comprendre ce qu'il faut récupérer. Je comprends qu'il faut récupérer les 3 premières lettres, mais comment tu détermines que c'est précisément ce dossier là et pas son sous-dossier ou bien son dossier parent ?
Un point à éclaircir : - pouvoir ciblé le début ou un dossier en particulier dans une cible de répertoire
Ce matin il s'agissait de récupérer un numéro à 4 chiffres, maintenant j'ai du mal à comprendre ce qu'il faut récupérer. Je comprends qu'il faut récupérer les 3 premières lettres, mais comment tu détermines que c'est précisément ce dossier là et pas son sous-dossier ou bien son dossier parent ?
MAXIME
L'arborescence est fixe jusqu'au nom du client :
s:entreprise\tkmi\01_clients\ERM\1431\02_conception\
1 2 3 4 5 6
L'élément 4 est celui qui sera ciblé il arrivera que le nom de ce dossier soit de 2 caractère minimum (dans ce cas on afficherait la totalité du nom du dossier) et quand il fait plus de 4 caractères on afficherait que les 3 première lettres du nom du dossier ciblé
L'élément 1 , 2 et 3 sont quant à eux fixe et le client (dossier ciblé) sera toujours en 4eme position dans la cible
s:entreprise\tkmi\01_clients\ERM\1431\02_conception\
1 2 3 4 5 6
L'élément 4 est celui qui sera ciblé il arrivera que le nom de ce dossier soit de 2 caractère minimum (dans ce cas on afficherait la totalité du nom du dossier) et quand il fait plus de 4 caractères on afficherait que les 3 première lettres du nom du dossier ciblé
L'élément 1 , 2 et 3 sont quant à eux fixe et le client (dossier ciblé) sera toujours en 4eme position dans la cible
MAXIME
Il y a un ficher piece et un fichier assemblage
SLDPRT
SLDASM
Cette règle de nommage et de création de fichier sera valable pour encore plein d'extension différente d'où la modification simple
Lors d'un assemblage il est possible de créer n pièce
Donc je pense que un paramètre du nombre de création serait interessant pour les pièces comme les assemblage
Par défaut on pourrait mettre 1 mais on peut faire qqch ou c'est une variable que l'on demande lors de la création
donc oui plusieurs fichiers
SLDPRT
SLDASM
Cette règle de nommage et de création de fichier sera valable pour encore plein d'extension différente d'où la modification simple
Lors d'un assemblage il est possible de créer n pièce
Donc je pense que un paramètre du nombre de création serait interessant pour les pièces comme les assemblage
Par défaut on pourrait mettre 1 mais on peut faire qqch ou c'est une variable que l'on demande lors de la création
donc oui plusieurs fichiers
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Je vais voir par la suite pour le paramètre du nombre de création.
Pour l'instant dis-moi si ça va dans la bonne direction ou pas :
Il y a 2 manières d'indiquer le dossier de destination, soit en exécutant le script puis en tapant le nom, soit en faisant un glisser-déposer du dossier sur le fichier .bat
Pour l'instant dis-moi si ça va dans la bonne direction ou pas :
@echo off setlocal enableextensions enabledelayedexpansion Mode con cols=120 lines=20 chcp 28591 >nul color 0A : -------------------------------------------------------------------------------------- : on définit les variables : -------------------------------------------------------------------------------------- set "ressources=%~dp0" set "nombre=100000" set "AAMMJJ=%date:~6,4%%date:~3,2%%date:~0,2%" set "prefixe=Z_" : -------------------------------------------------------------------------------------- : on vérifie si le template et son dossier existent ou pas : -------------------------------------------------------------------------------------- cd /d %ressources% || exit /b 1 if not exist "%prefixe%.%~n0" (exit /b 1) : -------------------------------------------------------------------------------------- : on définit le dossier de destination : -------------------------------------------------------------------------------------- if not "A%~1A"=="AA" (set "cible=%~1" & goto :suite) :debut set "cible=" cls & echo. & set /p cible="### Veuillez indiquer le dossier de destination : " if not defined cible (goto :debut) if "!cible:~-1!"=="\" (set cible=!cible:~0,-1!) if not exist "!cible!" (goto :debut) : -------------------------------------------------------------------------------------- : on récupère le nom du client : -------------------------------------------------------------------------------------- :suite for /f "tokens=5,* delims=\" %%A in ("!cible!") do set "client=%%A" set "client=!client:~0,3!" : -------------------------------------------------------------------------------------- : on confirme les informations : -------------------------------------------------------------------------------------- cls & echo. & echo ^>^>^> Dossier contenant le template ==^>^> %ressources% echo. & echo ^>^>^> Dossier de destination ==^>^> !cible! echo. & set /p confirm="### Appuyez sur la touche Y pour confirmer " if not "%confirm%"=="Y" (exit /b 1) else (echo.) : -------------------------------------------------------------------------------------- : on construit le nom du fichier : -------------------------------------------------------------------------------------- :Boucle if !nombre! GEQ 109999 (set index=!nombre:~1!) else (set index=!nombre:~2!) set "file=%prefixe%!client!_%AAMMJJ%_!index!_.%~n0" if exist "!cible!\!file!" (set /a nombre+=1 & goto :Boucle) : -------------------------------------------------------------------------------------- : on copie le fichier dans la destination : -------------------------------------------------------------------------------------- >nul copy "%ressources%\%prefixe%.%~n0" "!cible!\!file!" echo. & echo ^>^>^> Le fichier !file! a été créé echo. & pause exit
Il y a 2 manières d'indiquer le dossier de destination, soit en exécutant le script puis en tapant le nom, soit en faisant un glisser-déposer du dossier sur le fichier .bat
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Le script doit obligatoirement être placé dans le dossier contenant les templates.
MAXIME
J'essaye ca demain matin sans faute .
Pour renseigner le dossier de destination dans l'invite de commande on ne peut pas faire un copier coller ?
J'aime bcp l'idée sur glisser déposer mais je préfère dans le sens inverse
de la commande vers le dossier et non l'inverse
Je prend connaissance du code proposé en detail demain matin
Merci
Pour renseigner le dossier de destination dans l'invite de commande on ne peut pas faire un copier coller ?
J'aime bcp l'idée sur glisser déposer mais je préfère dans le sens inverse
de la commande vers le dossier et non l'inverse
Je prend connaissance du code proposé en detail demain matin
Merci
maxime
Bonjour Barnabé ,
Le code est super bien fait , en plus c'est expliquer avec commentaire c'est top .
Je pense qu'il subsiste une erreur sur la confirmation avec la touche "Y" car cela ne fonctionne pas
Est-il possible de remplacer par "ENTREE" ?
Je pense que tout fonctionne à l'exception de la confirmation
Le code est super bien fait , en plus c'est expliquer avec commentaire c'est top .
Je pense qu'il subsiste une erreur sur la confirmation avec la touche "Y" car cela ne fonctionne pas
Est-il possible de remplacer par "ENTREE" ?
Je pense que tout fonctionne à l'exception de la confirmation
maxime
J'aurais une dernière demande ca serait d'avoir pour les SLDPRT avec un chiffre incrémental de 10000 et les fichier SLDASM 20000
Je ne souhaiterais pas avoir un nom de fichier assemblage identique a celui d'une pièce
Il est assez simple d'exécuter la commande mais nous avions parler de la quantité de fichiers à générer par une variable ?
C'est facile à ajouter selon toi ?
je pense a qqch comme ca pour le debut mais par la suite comment répéter la copie je ne sais pas tout en gardant l'incrémentiel
Belle journée
Max
Je ne souhaiterais pas avoir un nom de fichier assemblage identique a celui d'une pièce
Il est assez simple d'exécuter la commande mais nous avions parler de la quantité de fichiers à générer par une variable ?
C'est facile à ajouter selon toi ?
je pense a qqch comme ca pour le debut mais par la suite comment répéter la copie je ne sais pas tout en gardant l'incrémentiel
: --------------------------------------------------------------------------------------
: on definit la quantité de fichiers à générer
: --------------------------------------------------------------------------------------
set "quantité="
cls & echo. & set /p quantité="### Veuillez indiquer la quantité de fichier à générer : "
Belle journée
Max
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Salut, voilà le script final :
@echo off setlocal enableextensions enabledelayedexpansion Mode con cols=120 lines=20 chcp 28591 >nul color 0A : -------------------------------------------------------------------------------------- : on définit les variables : -------------------------------------------------------------------------------------- set "ressources=%~dp0" set "AAMMJJ=%date:~6,4%%date:~3,2%%date:~0,2%" set "prefixe=Z_" if "%~n0"=="SLDPRT" (set "nombre=10000") if "%~n0"=="SLDASM" (set "nombre=20000") : -------------------------------------------------------------------------------------- : on vérifie si le template et son dossier existent ou pas : -------------------------------------------------------------------------------------- cd /d %ressources% || exit /b 1 if not exist "%prefixe%.%~n0" (exit /b 1) : -------------------------------------------------------------------------------------- : on définit le dossier de destination : -------------------------------------------------------------------------------------- if not "A%~1A"=="AA" (set "cible=%~1" & goto :suite) :debut set "cible=" cls & echo. & set /p cible="### Veuillez indiquer le dossier de destination : " if not defined cible (goto :debut) if "!cible:~-1!"=="\" (set cible=!cible:~0,-1!) if not exist "!cible!" (goto :debut) : -------------------------------------------------------------------------------------- : on récupère le nom du client : -------------------------------------------------------------------------------------- :suite for /f "tokens=5,* delims=\" %%A in ("!cible!") do set "client=%%A" set "client=!client:~0,3!" : -------------------------------------------------------------------------------------- : on confirme les informations : -------------------------------------------------------------------------------------- cls & echo. & echo ^>^>^> Dossier contenant le template ==^>^> %ressources% echo. & echo ^>^>^> Dossier de destination ==^>^> !cible! echo. & set /p confirm="### Appuyez sur la touche Y pour confirmer " if /i "%confirm%"=="Y" (echo.) else (exit /b 1) : -------------------------------------------------------------------------------------- : on definit la quantité de fichiers à générer : -------------------------------------------------------------------------------------- set "quantite=" cls & echo. & set /p quantite="### Veuillez indiquer la quantité de fichier à générer : " if not defined quantite (set quantite=1) echo. : -------------------------------------------------------------------------------------- : on lance la procédure de génération des fichiers : -------------------------------------------------------------------------------------- for /L %%A in (1,1,%quantite%) do call :Boucle : -------------------------------------------------------------------------------------- : fin du script : -------------------------------------------------------------------------------------- echo. & echo. & pause exit : -------------------------------------------------------------------------------------- : on construit le nom du fichier : -------------------------------------------------------------------------------------- :Boucle set "file=%prefixe%!client!_%AAMMJJ%_!nombre!_.%~n0" if exist "!cible!\!file!" (set /a nombre+=1 & goto :Boucle) : -------------------------------------------------------------------------------------- : on copie le fichier dans la destination : -------------------------------------------------------------------------------------- >nul copy "%prefixe%.%~n0" "!cible!\!file!" && (echo. & echo ^>^>^> Le fichier !file! a été créé) goto :eof
maxime
Barnabé ,
J'ai un soucis sur la cible de départ ...
Il y a des lecteurs montés suivant les dossiers que l'on utilise.
La cible est donc avec la lettre du lecteur donc pas complète suivant le lecteur par lequel on ouvre le dossier :
exemple :
dossier ressource : R:\
reseau entreprise : S:\TKMI\1-CLIENTS
client : Z:\
Ma question est la suivante .
est il possible de copier coller la cible avec l'adresse réseau et non l'adresse ordinateur ?
Je t'avoue que je ne sais pas vraiment comment la récupérer
Cela implique que le dossier ciblé suivant comment on l'ouvre n'est pas correctement ciblé puisque ca change
Je pense que je vais devoir utiliser des raccourcis plutôt que des lecteurs bien définis j'ai l'impression
J'ai un soucis sur la cible de départ ...
Il y a des lecteurs montés suivant les dossiers que l'on utilise.
La cible est donc avec la lettre du lecteur donc pas complète suivant le lecteur par lequel on ouvre le dossier :
exemple :
dossier ressource : R:\
reseau entreprise : S:\TKMI\1-CLIENTS
client : Z:\
Ma question est la suivante .
est il possible de copier coller la cible avec l'adresse réseau et non l'adresse ordinateur ?
Je t'avoue que je ne sais pas vraiment comment la récupérer
Cela implique que le dossier ciblé suivant comment on l'ouvre n'est pas correctement ciblé puisque ca change
Je pense que je vais devoir utiliser des raccourcis plutôt que des lecteurs bien définis j'ai l'impression
maxime
L'idéal serait de ciblé le 1er dossier après la lettre du lecteur et le \
Cela impose à l'utilisateur de copier la cible toujours a partir du meme dossier
Mais c'est une bonne solution je pense
Il me semble que le paramètre de comptage du dossier par de la droite nn ?
Cela impose à l'utilisateur de copier la cible toujours a partir du meme dossier
Mais c'est une bonne solution je pense
Il me semble que le paramètre de comptage du dossier par de la droite nn ?
maxime
>
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
nickel avec le 65001
Qqch subsiste ... est ce que on peut éviter d'ouvrir le dossier a la fin de la commande .?
Et quand on repete la commande lors d'un oubli de pièce ou assemblage est ce que l'incrément peut se faire sur le plus grand exemple :
Z_TKM_201222_10006_.sldprt
Z_TKM_201222_10008_.sldprt
le prochain serait
Z_TKM_201222_10009_.sldprt
plutot que
Z_TKM_201222_10007_.sldprt
En partant de la fin surement ? Comme sur excel 65536 ...
Qqch subsiste ... est ce que on peut éviter d'ouvrir le dossier a la fin de la commande .?
Et quand on repete la commande lors d'un oubli de pièce ou assemblage est ce que l'incrément peut se faire sur le plus grand exemple :
Z_TKM_201222_10006_.sldprt
Z_TKM_201222_10008_.sldprt
le prochain serait
Z_TKM_201222_10009_.sldprt
plutot que
Z_TKM_201222_10007_.sldprt
En partant de la fin surement ? Comme sur excel 65536 ...
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Pour éviter d'ouvrir le dossier à la fin de la commande, tu peux supprimer cette ligne :
Je vais voir ce que je peux faire pour l'incrément.
explorer /select,"!cible!"
Je vais voir ce que je peux faire pour l'incrément.
maxime
>
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Un numéro incrémentiel unique sur le dossier client c'est possible ?
dossier client \ affaire 1 \ de 10001 à 10050
dossier client \ affaire 2 \ de 10051 à 10100
je souhaiterais cette option car lors d'une recherche windows je voudrais éviter que l'on trouve des noms de fichiers identiques dans des dossier différents
C'est nécessaire je pense pour un meilleur classement de nos données .
Pour le moment toutes les données toutes affaire confondue sont dans le meme dossier client en vrac
C'est le bordel .
Etant donné que nous ne faisons pas afficher le n° ou nom de l'affaire
Les 49 fichiers sont des exemples il y aura bien sur une quantités différente entre deux affaire
Si on code ceci ca veux dire qu'il y a un fichier journal qui s'incrémente quelque soit l'affaire dans le dossier client
il me semble ...
Jouable ou non ?
dossier client \ affaire 1 \ de 10001 à 10050
dossier client \ affaire 2 \ de 10051 à 10100
je souhaiterais cette option car lors d'une recherche windows je voudrais éviter que l'on trouve des noms de fichiers identiques dans des dossier différents
C'est nécessaire je pense pour un meilleur classement de nos données .
Pour le moment toutes les données toutes affaire confondue sont dans le meme dossier client en vrac
C'est le bordel .
Etant donné que nous ne faisons pas afficher le n° ou nom de l'affaire
Les 49 fichiers sont des exemples il y aura bien sur une quantités différente entre deux affaire
Si on code ceci ca veux dire qu'il y a un fichier journal qui s'incrémente quelque soit l'affaire dans le dossier client
il me semble ...
Jouable ou non ?
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Tout est jouable, du moment qu'on a assez d'imagination ;)
Par contre je vais avoir besoin de plus d'explications :
- comment déterminer le nombre d'incréments pour chaque affaire ? Et pour chaque client ?
- est-ce qu'on garde la plage d'incréments (10000 ou 20000) en fonction du nom du script (SLDPRT ou SLDASM) ?
Par contre je vais avoir besoin de plus d'explications :
- comment déterminer le nombre d'incréments pour chaque affaire ? Et pour chaque client ?
- est-ce qu'on garde la plage d'incréments (10000 ou 20000) en fonction du nom du script (SLDPRT ou SLDASM) ?
MAXIME
>
barnabe0057
- Messages postés
- 13118
- Date d'inscription
- lundi 2 mars 2009
- Statut
- Contributeur
- Dernière intervention
- 9 janvier 2021
Barnabé ,
Pour répondre à tes questions :
1ere question : avec un fichier journal genre un fichier texte qui s'alimente tt seul suivant les dossier créer à l'exécution de la commande
Cependant on ne sait par dire exactement à l'avance le nombre de pièces et d'assemblage nécessaire à l'affaire.
j'avais pensé incrémenter des lettres (au lieux des chiffres) comme des immatriculations véhicule mais le problème sera le même avec le nom du client et cet incrémentation de lettre (AAAA ; AAAB ; AAAC ...) (C'est nul j'avoue mais ca offre plus de possibilité que 9999)
Sinon Je pense à une partie du code en premier qui lis et qui vérifie ce qu'il y a dans le dossier client et l'autre partie qui écris et créés les fichiers ... facile a dire c'est vrai plus dure a faire
2eme question :
je souhaiterais garder une réelle différence en plus de l'extension, entre les pièces et les assemblages.
on peut mettre un P pour pièce devant le numéro incrémentiel ou un A pour assemblage pour éviter de mettre 10000 ou 20000 et donc avoir un numéro incrémentiel unique pour les assemblages et les pièces.
eviter d'avoir :
Z_AND_7614_201222_10001_.sldprt
Z_AND_7614_201222_10001_.sldasm
mais
Z_AND_7614_201222_P0001_.sldprt
Z_AND_7614_201222_A0001_.sldasm
Voila pour les questions posées
Voici ensuite les explications et nouveaux critères
Un critère s'ajoute à la règle de nommage .
Le numéro de l'affaire ! c'est les 4 premiers caractères qui suivent le dossier client
Malheureusement il n'y a pas de numéro d'affaire à chaque fois ! b**** de *****
En gros si le dossier après celui du client dans la cible commence par des chiffre c'est que il y a un numéro d'affaire
S'il y en a pas de chiffres c'est que il y en a pas (dommage pour ceux qui vont pointé sur ce travail)
Le nom du dossier peut avoir cette syntaxe là " 7614_CHARIOT ALU "
L'idée est de cibler "7614" pour le mettre dans le nom du fichier entre le client et la date.
Ce numéro la est donné par l'erp de l'entreprise . C'est un numéro unique .
Le nommage que je souhaite est de type : Z_AND_7614_201222_10001_.sldprt
il n'empêche que on pourrait se trouvé dans le cas ou le nommage aurait une particularité :
Que le n° d'affaire serait identique au 4 dernier chiffres de l'incrémentiel ... coïncidence j'avoue ..
D'où l'idée que l'incrémentiel se fasse sur le dernier chiffre disponible de tout le client et non de l'affaire
dans ce cas il est est je pense moins facile d'avoir les deux en même temps
On pourrait exclure le numéro d'affaire des numéros incrémentiel possibles ? par détection automatique
Pour ce faire il faudrait mettre en place la détection du n° d'affaire avant de créé plein de fichiers
Cela complexifie les choses mais je pense que c'est la meilleure solutions pour éviter les deux même numéro dans le nom du fichiers
J'informe également le fait que il y a autant de critères dans le nom du fichier car ceux qui les utilisent, cherchent selon 3 critères :
- le nom du client
- le n° d'affaire
- et la date à laquelle je cite (plus ou moins ou ça a été conçu) (en soit je suis pas contre mais je trouve ca pas utile)
Il est fort probable que l'on enlève la date dans le nom du fichier, puisque l'affichage détail de Windows et la recherche permettre de trier par date.
Ca ferait gagner séparateur compris 7 caractères
C'est la raison pour laquelle je souhaite pouvoir modifier le nom du fichier assez facilement...
On ou off dans le code c'est possible ? Désolé pour cette option désactivable ou non , le nommage ne dépend pas que de moi
La nouvelle règle de nommage est la suivante :
Z_AND_7614_10001_.SDLPRT
1 2 3 4 5
1=PREFIXE
2=3 premiers caractère du dossier client ciblé
3=4 premiers caractères du dossier après le dossier client donc le numéro d'affaire à 4 chiffres
4=numéro incrémentiel unique dans tout le dossier client
5=extension du fichier donnée par le nom du fichier .bat
Pour le n°3 il est fort probable que je souhaite une autre cmd pour extraire la fin du nom du dossier "affaire"
Chaque chose en son temps
En espérant que tout ceci est clair
D'avance Merci .
Désolé pour la tartine
Pour répondre à tes questions :
1ere question : avec un fichier journal genre un fichier texte qui s'alimente tt seul suivant les dossier créer à l'exécution de la commande
Cependant on ne sait par dire exactement à l'avance le nombre de pièces et d'assemblage nécessaire à l'affaire.
j'avais pensé incrémenter des lettres (au lieux des chiffres) comme des immatriculations véhicule mais le problème sera le même avec le nom du client et cet incrémentation de lettre (AAAA ; AAAB ; AAAC ...) (C'est nul j'avoue mais ca offre plus de possibilité que 9999)
Sinon Je pense à une partie du code en premier qui lis et qui vérifie ce qu'il y a dans le dossier client et l'autre partie qui écris et créés les fichiers ... facile a dire c'est vrai plus dure a faire
2eme question :
je souhaiterais garder une réelle différence en plus de l'extension, entre les pièces et les assemblages.
on peut mettre un P pour pièce devant le numéro incrémentiel ou un A pour assemblage pour éviter de mettre 10000 ou 20000 et donc avoir un numéro incrémentiel unique pour les assemblages et les pièces.
eviter d'avoir :
Z_AND_7614_201222_10001_.sldprt
Z_AND_7614_201222_10001_.sldasm
mais
Z_AND_7614_201222_P0001_.sldprt
Z_AND_7614_201222_A0001_.sldasm
Voila pour les questions posées
Voici ensuite les explications et nouveaux critères
Un critère s'ajoute à la règle de nommage .
Le numéro de l'affaire ! c'est les 4 premiers caractères qui suivent le dossier client
Malheureusement il n'y a pas de numéro d'affaire à chaque fois ! b**** de *****
En gros si le dossier après celui du client dans la cible commence par des chiffre c'est que il y a un numéro d'affaire
S'il y en a pas de chiffres c'est que il y en a pas (dommage pour ceux qui vont pointé sur ce travail)
Le nom du dossier peut avoir cette syntaxe là " 7614_CHARIOT ALU "
L'idée est de cibler "7614" pour le mettre dans le nom du fichier entre le client et la date.
Ce numéro la est donné par l'erp de l'entreprise . C'est un numéro unique .
Le nommage que je souhaite est de type : Z_AND_7614_201222_10001_.sldprt
il n'empêche que on pourrait se trouvé dans le cas ou le nommage aurait une particularité :
Que le n° d'affaire serait identique au 4 dernier chiffres de l'incrémentiel ... coïncidence j'avoue ..
D'où l'idée que l'incrémentiel se fasse sur le dernier chiffre disponible de tout le client et non de l'affaire
dans ce cas il est est je pense moins facile d'avoir les deux en même temps
On pourrait exclure le numéro d'affaire des numéros incrémentiel possibles ? par détection automatique
Pour ce faire il faudrait mettre en place la détection du n° d'affaire avant de créé plein de fichiers
Cela complexifie les choses mais je pense que c'est la meilleure solutions pour éviter les deux même numéro dans le nom du fichiers
J'informe également le fait que il y a autant de critères dans le nom du fichier car ceux qui les utilisent, cherchent selon 3 critères :
- le nom du client
- le n° d'affaire
- et la date à laquelle je cite (plus ou moins ou ça a été conçu) (en soit je suis pas contre mais je trouve ca pas utile)
Il est fort probable que l'on enlève la date dans le nom du fichier, puisque l'affichage détail de Windows et la recherche permettre de trier par date.
Ca ferait gagner séparateur compris 7 caractères
C'est la raison pour laquelle je souhaite pouvoir modifier le nom du fichier assez facilement...
On ou off dans le code c'est possible ? Désolé pour cette option désactivable ou non , le nommage ne dépend pas que de moi
La nouvelle règle de nommage est la suivante :
Z_AND_7614_10001_.SDLPRT
1 2 3 4 5
1=PREFIXE
2=3 premiers caractère du dossier client ciblé
3=4 premiers caractères du dossier après le dossier client donc le numéro d'affaire à 4 chiffres
4=numéro incrémentiel unique dans tout le dossier client
5=extension du fichier donnée par le nom du fichier .bat
Pour le n°3 il est fort probable que je souhaite une autre cmd pour extraire la fin du nom du dossier "affaire"
Chaque chose en son temps
En espérant que tout ceci est clair
D'avance Merci .
Désolé pour la tartine