SF.Designer Posté(e) le 13 avril 2016 Posté(e) le 13 avril 2016 Bonjour a tous, Juste pour une petite question. Je defini avec un .bat une variable systeme :setx MaVar "NOIR" /m Ou une variable utilisateursetx MaVar "NOIR" Comment puis je recuperer cette variable dans un script autocad lancé par le même .bat que cité précédemment ? Mon Script :._-plot _YES MODEL PDF Y4X24 _MILLIMETERS _LANDSCAPE _NO _EXTENTS 1:1 0.00,0.00 _YES NOIR <<<<<<<< c'est a ce niveau la que je souhaite recuperer la variable systeme _YES _WIREFRAME !PDFTEINTAGE _NO _YES _QUIT
SF.Designer Posté(e) le 13 avril 2016 Auteur Posté(e) le 13 avril 2016 Merci d'avance gente programmeur !!!
vincentp010 Posté(e) le 13 avril 2016 Posté(e) le 13 avril 2016 Salut, Tu ne peux pas écrire ton script depuis ton bat, puis le lancer ? Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js
SF.Designer Posté(e) le 13 avril 2016 Auteur Posté(e) le 13 avril 2016 Pour info, c'est pour la creation d'une moulinette de creation des fichiers en PDF et en PLT Mes fichiers .bat sont lancés a partir d'hyperliens dans un fichier excel. J'ai plusieurs .bat : - pour PDF : PDFNOIR.bat / PDFNOIRTEINTAGE.bat / PDFTEINTAGE.bat - pour PLT : PLTNOIR.bat / PLTNOIRTEINTAGE.bat / PLTTEINTAGE.bat Ces différents fichiers lance des fichiers scripts suivant certaines conditions. Pour exemple "PDFNOIR.bat" @echo off @title PDF NOIR ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: DECLARATION TYPES DE SORTIE :FILESTYPE :: Fichier sortie a creer (PlotType) set "PT=PDF" :: Fichier sortie a creer (PlotStyles) set "PS=NOIR" ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: DECLARATION VARIABLE CONSOLE :CONSOLE1 :: Test chemin de la console AutoCAD V1 if exist "C:\PROGRA~1\Autodesk\AUTOCA~1\accoreconsole.exe" set accoreexe="C:\PROGRA~1\Autodesk\AUTOCA~1\accoreconsole.exe" ELSE GOTO :TESTDIRCONSOLEAUTOCAD2 GOTO :DIR :CONSOLE2 :: Test chemin de la console AutoCAD V2 if exist "C:\PROGRA~1\AUTOCA~1\accoreconsole.exe" set accoreexe="C:\PROGRA~1\AUTOCA~1\accoreconsole.exe" ELSE GOTO :FIN GOTO :DIR ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: DECLARATION CHEMINS :DIR :: Chemin du répertoire contentant les fichiers à traiter set "DirSCH=D:\Tirage" :: Chemin des scripts set "DirScript=W:\Communication\Informatique\BatchScript\app" GOTO :FAC ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: CREATION FICHIERS BORNAGE :FAC :: Script FACADE set ScriptFAC="%DirScript%\%PT%FACADE%PS%.scr" :: Test existance des fichiers *FAC*.dwg for /r %DirSCH% %%X in (*FAC*.dwg) do if exist %%X forfiles /p %DirSCH% /s /m *FAC*.dwg /c "cmd /c call %accoreexe% /s %ScriptFAC% /i "@PATH" && cmd /c del /Q "@PATH"" GOTO :CH0 :::::::::::::::::::::::::::: :CH0 :: Script CH0 set ScriptCH0="%DirScript%\%PT%CH0%PS%.scr" :: Test existance des fichiers *CH0*.dwg for /r %DirSCH% %%X in (*CH0*.dwg) do if exist %%X forfiles /p %DirSCH% /s /m *CH0*.dwg /c "cmd /c call %accoreexe% /s %ScriptCH0% /i "@PATH" && cmd /c del /Q "@PATH"" GOTO :CH1 :::::::::::::::::::::::::::: :CH1 :: Script CH1 set ScriptCH1="%DirScript%\%PT%CH1%PS%.scr" :: Test existance des fichiers *CH1*.dwg for /r %DirSCH% %%X in (*CH1*.dwg) do if exist %%X forfiles /p %DirSCH% /s /m *CH1*.dwg /c "cmd /c call %accoreexe% /s %ScriptCH1% /i "@PATH" && cmd /c del /Q "@PATH"" GOTO :CH2 :::::::::::::::::::::::::::: :CH2 :: Script CH2 set ScriptCH2="%DirScript%\%PT%CH2%PS%.scr" :: Test existance des fichiers *CH2*.dwg for /r %DirSCH% %%X in (*CH2*.dwg) do if exist %%X forfiles /p %DirSCH% /s /m *CH2*.dwg /c "cmd /c call %accoreexe% /s %ScriptCH2% /i "@PATH" && cmd /c del /Q "@PATH"" GOTO :CH3 :::::::::::::::::::::::::::: :CH3 :: Script CH3 set ScriptCH3="%DirScript%\%PT%CH3%PS%.scr" :: Test existance des fichiers *CH3*.dwg for /r %DirSCH% %%X in (*CH3*.dwg) do if exist %%X forfiles /p %DirSCH% /s /m *CH3*.dwg /c "cmd /c call %accoreexe% /s %ScriptCH3% /i "@PATH" && cmd /c del /Q "@PATH"" GOTO :CH9 :::::::::::::::::::::::::::: :CH9 :: Script CH9 set ScriptCH9="%DirScript%\%PT%CH9%PS%.scr" :: Test existance des fichiers *CH9*.dwg et creation des fichiers de sortie for /r %DirSCH% %%X in (*CH9*.dwg) do if exist %%X forfiles /p %DirSCH% /s /m *CH9*.dwg /c "cmd /c call %accoreexe% /s %ScriptCH9% /i "@PATH" && cmd /c del /Q "@PATH"" GOTO :SCH ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: CREATION FICHIERS SCHEMAS :SCH :: Test existance des fichiers *.dwg set ScriptSCH="%DirScript%\%PT%%PS%.scr" for /r %DirSCH% %%X in (*.dwg) do if exist %%X forfiles /p %DirSCH% /s /m *.dwg /c "cmd /c call %accoreexe% /s %ScriptSCH% /i "@PATH" && cmd /c del /Q "@PATH"" GOTO :DEL ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: SUPPRIMER FICHIERS OBSOLETES :DEL :: Declarer types de fichiers a chercher set "SearchFilesTypes=*.plt,*.txt,*.bak,*.bor,*.paf,*.ns1,*.bor,*.dif,*.dmp,*.dat,*.car,*.db,*.scr,*.dwl,*.dwl2,*.jpg,*.bmp,*.png,*.sca,*.err,*.log,*.svg,*.non,*.oui,*.dwg,*.lnk,*.xls,*.xlsx,*.doc,*.docx" :: Declarer types de fichiers a supprimer set "DelFilesTypes= .plt .txt .bak .bor .paf .ns1 .bor .dif .dmp .dat .car .db .scr .dwl .dwl2 .jpg .bmp .png .sca .err .log .svg .non .oui .dwg .lnk .xls .xlsx .doc .docx" :: Test existance des fichiers a supprimer et suppression for /r %DirSCH% %%X in (%SearchFilesTypes%) do for %%G in (%DelFilesTypes%) do forfiles /p %DirSCH% /s /m *%%G /c "cmd /c del /Q /F @FILE" GOTO :FIN :FIN pause Et mes fichiers script : - Exemple 1 : PDFNOIR.scr; PDF NOIR ; ------------------------------ (setq DirConfig (getenv "PrinterConfigDir")) (setq DirDesc (getenv "PrinterDescDir")) (setq DirStyleSheet (getenv "PrinterStyleSheetDir")) ; ------------------------------ (setenv "PrinterConfigDir" "W:\\Communication\\Informatique\\BatchScript\\Print") (setenv "PrinterDescDir" "W:\\Communication\\Informatique\\BatchScript\\Print") (setenv "PrinterStyleSheetDir" "W:\\Communication\\Informatique\\BatchScript\\Print") ; ------------------------------ ; Configuration style de tracé des calques en mode CTB (if (= (getvar "PSTYLEMODE") 0)(command "convertpstyles")) ; ------------------------------ ; Base Initialisation impression (setq DWG (getvar "DWGNAME")) (setq LONG (strlen DWG)) (setq LON (- LONG 4)) (setq PDFCHAS (substr DWG 1 LON)) (setq PDFNOIR (strcat (strcase (getvar "DWGPREFIX")) "NB-" PDFCHAS ".pdf")) ; ------------------------------ ; NOIR ._-plot _YES MODEL PDF Y4X24 _MILLIMETERS _LANDSCAPE _NO _EXTENTS 1:1 0.00,0.00 _YES NOIR _YES _WIREFRAME !PDFNOIR _NO _YES ; ------------------------------ (setenv "PrinterConfigDir" DirConfig) (setenv "PrinterDescDir" DirDesc) (setenv "PrinterStyleSheetDir" DirStyleSheet) ; ------------------------------ _QUIT - Exemple 2 : PDFCH3NOIR.scr; CH3 NOIR ; ------------------------------ (setq DirConfig (getenv "PrinterConfigDir")) (setq DirDesc (getenv "PrinterDescDir")) (setq DirStyleSheet (getenv "PrinterStyleSheetDir")) ; ------------------------------ (setenv "PrinterConfigDir" "W:\\Communication\\Informatique\\BatchScript\\Print") (setenv "PrinterDescDir" "W:\\Communication\\Informatique\\BatchScript\\Print") (setenv "PrinterStyleSheetDir" "W:\\Communication\\Informatique\\BatchScript\\Print") ; ------------------------------ ; Configuration style de tracé des calques en mode CTB (if (= (getvar "PSTYLEMODE") 0)(command "convertpstyles")) ; ------------------------------ ; Base Initialisation impression (setq DWG (getvar "DWGNAME")) (setq LONG (strlen DWG)) (setq LON (- LONG 4)) (setq PDFCH3CHAS (substr DWG 1 LON)) (setq PDFCH3F01NOIR (strcat (strcase (getvar "DWGPREFIX")) "NB-" PDFCH3CHAS "_F01_(ES16-SVLTP).pdf")) (setq PDFCH3F02NOIR (strcat (strcase (getvar "DWGPREFIX")) "NB-" PDFCH3CHAS "_F02_(CAB-ABCD).pdf")) (setq PDFCH3F03NOIR (strcat (strcase (getvar "DWGPREFIX")) "NB-" PDFCH3CHAS "_F03_(CAB-EFGH).pdf")) (setq PDFCH3F04NOIR (strcat (strcase (getvar "DWGPREFIX")) "NB-" PDFCH3CHAS "_F04_(CAB-JK).pdf")) ; ------------------------------ ; NOIR ; Folio 1 ._-plot _YES MODEL PDF Y1X5 _MILLIMETERS _PORTRAIT _NO _WINDOW 1260,-1050 1557,0 1:1 0.00,0.00 _YES NOIR _YES _WIREFRAME !PDFCH3F01NOIR _NO _YES ; Folio 2 ._-plot _YES MODEL PDF Y1X10 _MILLIMETERS _PORTRAIT _NO _WINDOW 60,-2100 357,0 1:1 0.00,0.00 _YES NOIR _YES _WIREFRAME !PDFCH3F02NOIR _NO _YES ; Folio 3 ._-plot _YES MODEL PDF Y1X10 _MILLIMETERS _PORTRAIT _NO _WINDOW 460,-2100 757,0 1:1 0.00,0.00 _YES NOIR _YES _WIREFRAME !PDFCH3F03NOIR _NO _YES ; Folio 4 ._-plot _YES MODEL PDF Y1X10 _MILLIMETERS _PORTRAIT _NO _WINDOW 860,-2100 1157,0 1:1 0.00,0.00 _YES NOIR _YES _WIREFRAME !PDFCH3F04NOIR _NO _YES ; ------------------------------ (setenv "PrinterConfigDir" DirConfig) (setenv "PrinterDescDir" DirDesc) (setenv "PrinterStyleSheetDir" DirStyleSheet) ; ------------------------------ _QUIT Voila la raison pour laquel je souhaite passer par la creation d'une variable systeme ou utilisateur dans mon .bat pour ensuite recuperer dans mon .scr Ma variable prendra soit "NOIR", soit "TEINTAGE"
SF.Designer Posté(e) le 13 avril 2016 Auteur Posté(e) le 13 avril 2016 Ah oui et cela me réduirai mes fichiers script par 3 !!! Actuellement : exemple : - PDFCH3NOIR.scr - PDFCH3TEINTAGE.scr - PDFCH3NOIRTEINTAGE.scrle but etant de me retrouver avec seulement : - PDFCH3.scr - Qui prendrait donc la valeur de la variable systeme ou utilisateur en question !
bonuscad Posté(e) le 13 avril 2016 Posté(e) le 13 avril 2016 Bonjour, J'ai juste essayé par curiosité...J'ai donc fait setx MaVar "NOIR" Puis dans Autocad déjà lancé (avant d'avoir initialisé MaVar)(getenv "MaVar")Il m'a renvoyé "nil" J'ai fermé et relancé Autocad et ce coup-ci (getenv "MaVar") m'a bien retourné "NOIR". Donc (getenv) fonctionne bien si l'environnement a été déclaré avant le lancement d'Autocad. Cela va t-il te faire avancer les choses ?... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Patrick_35 Posté(e) le 13 avril 2016 Posté(e) le 13 avril 2016 Salut De mémoire, je vu ou fais (je ne sais plus) un truc qui permet de récupérer les variables d'environnement DOS.C'est sur la base des API. Je me demande même si ce n'est pas dans un exemple que j'ai donné qui donne toutes les indications sur le PCReste à le retrouver, mais pas pour l'instant (pas le temps) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
SF.Designer Posté(e) le 13 avril 2016 Auteur Posté(e) le 13 avril 2016 @Bonuscad: Effectivement j'avais oublier de préciser que ce que tu décris m'arrivais. Je parle du retour "nil" qui me rendais fou.Par contre je ne m’étais pas rendu compte du fait qu'en redémarrant autocad cela retournait la bonne valeur.Je passe par la console autocad, qui permet de continuer a travailler en même temps que ma moulinette tourne, et donc j'avais toujours autocad lancé a coté ! Pourquoi ne récupère t'il pas la valeur sur l'instant du getenv ? Je vais essayer d'initialiser cette variable (avec autocad lancé et sans) : - soit au début de mon .bat, mais la console est déjà lancé du coup - soit dans mon fichier excel avant que cela ne lance la console @Patrick: Merci je vais essayer de retrouver, ça pourrait être intéressant. Merci merci
bonuscad Posté(e) le 13 avril 2016 Posté(e) le 13 avril 2016 Pourquoi ne récupère t'il pas la valeur sur l'instant du getenv ? Si tu fais un setx /? dans la console, tu pourras voir (vers la fin)les remarques 2 et 3Remarque : 1) SETX écrit des variables de l'environnement principal dans le Registre. 2) Sur un système local, les variables créées ou modifiées par cet outil seront disponibles dans les fenêtres de commandes futures mais pas dans la fenêtre de commande CMD.exe actuelle. 3) Sur un système distant, les variables créées ou modifiées par cet outil seront disponibles à la prochaine ouverture de session. 4) Les types de données de clé de Registre valides sont REG_DWORD, REG_EXPAND_SZ, REG_SZ, REG_MULTI_SZ. 5) Ruches prises en charge : HKEY_LOCAL_MACHINE (HKLM), HKEY_CURRENT_USER (HKCU). 6) Les délimiteurs respectent la casse. 7) Les valeurs REG_DWORD sont extraites du Registre au format décimal. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
SF.Designer Posté(e) le 13 avril 2016 Auteur Posté(e) le 13 avril 2016 J'avais pas tout lu ;)Bon ben go sur excel alors ^^
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant