Aller au contenu

Utiliser variable systeme dans un script


Messages recommandés

Bonjour a tous,

 

Juste pour une petite question.

 

Je defini avec un .bat une variable systeme :

setx MaVar "NOIR" /m

 

Ou une variable utilisateur

setx 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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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"

Lien vers le commentaire
Partager sur d’autres sites

Ah oui et cela me réduirai mes fichiers script par 3 !!!

 

Actuellement : exemple :

- PDFCH3NOIR.scr

- PDFCH3TEINTAGE.scr

- PDFCH3NOIRTEINTAGE.scr

le but etant de me retrouver avec seulement :

- PDFCH3.scr - Qui prendrait donc la valeur de la variable systeme ou utilisateur en question !

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 PC

Reste à le retrouver, mais pas pour l'instant (pas le temps)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

@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

Lien vers le commentaire
Partager sur d’autres sites

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 3

Remarque : 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

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité