Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Problème paramètre envoyé d'un vbs et récupéré dans bat
Auteur Message
Répondre en citant
Message Problème paramètre envoyé d'un vbs et récupéré dans bat 
Bonsoir chers amis batchers,

Je vous expose mon problème, je souhaite faire pour un projet une automatisation de la gestion AD d'un serveur.
J'ai créé un batch qui s'occupe de récupérer les utilisateurs, groupes et uo depuis un fichier txt ou csv existant.
Dans l'ensemble, ça marchait plutôt bien mais j'ai voulu rajouter une interface graphique (HTA) utilisant du VBScript. Quelle galère! Mr. Green
Comme je ne voulais pas refaire tout entièrement en vbscript, au moment d'importer mon fichier, je fais appel au batch.

Voici le bout de code vbs qui appelle le .bat et passe en paramètre le chemin vers le fichier en question.

Code:

Sub  btValid_OnClick

If  inFichier.value = "" Then   
     MsgBox "Vous n'avez pas spécifié de fichier à importer", vbExclamation, "Oubli de fichier"
else
     MsgBox "L'importation va commencer...", ,"Importation de fichier"
     Dim objShell
     Set objShell = CreateObject("WScript.Shell")
     objShell.Run "auto_users.bat " & Chr(34) & inFichier.value & Chr(34)
End If
end sub


Après une série de tests, le contenu du paramètre inFichier.value est récupéré dans le .bat sans soucis.
J'ai essayé sous la forme objShell.Run "auto_users.bat " & inFichier.value , il récupère C:\Documents. Normal me direz-vous, vu qu'il n'y a pas de guillemets.
Sous la forme objShell.Run "auto_users.bat " & Chr(34) & inFichier.value & Chr(34) , le chemin récupéré est bien "C:\Documents and Settings\Administrateur\Bureau\VBScript\gestion ad\doc\exemple.csv".

Voici le code du batch
Code:

::******************************************************************::
::******* Batch pour Importer les utilisateurs d'un parc  ******::
::*******     depuis une Base de données existante       ******::
::******************************************************************::
@title Import Users, Group, UO


::****** parametre récupéré du vbscript ******::
echo import_file =%1

::::::: Creation UO depuis fichier .csv ::::::::
rem 6 > uo
for /f "tokens=6 delims=; skip=2" %%r in (%1) do (
      dsadd  ou "OU=%%r,DC=domain,DC=lan"
      echo UO %%r cree avec succes! 
   )
pause


Je poste que ce bout de code car le reste fonctionne sur le même principe.
Dans chaque boucle, je récupère les informations voulues depuis un fichier texte ou csv.
Lors de mes tests à ce moment-là, la base d'utilisateurs (csv) était dans le même dossier que le .bat et je récupérait les infos simplement avec un:
Code:
for /f "tokens=6 delims=; skip=2" %%r in (exemple.csv) do (
      dsadd  ou "OU=%%r,DC=domain,DC=lan"
      echo UO %%r cree avec succes! 
   )


Là ça coince, peut être le chemin qui est trop long ou alors le fait que le fichier csv ne soit plus dans le même dossier.
Si vous avez des idées je suis preneur. Wink




______________________________________________________
Ne fais rien d'inutile.
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Problème paramètre envoyé d'un vbs et récupéré dans bat 
Finalement c'était bien le chemin qui foirait.

En mettant le paramètre à %~fs1, il me récupère que les noms courts du genre: C:\Docume~1\Admini~1\Bureau etc...

Si quelqu'un aurait une explication, ce serait sympa. J'ai compris à quoi il sert, mais pourquoi il faut obligatoirement l'utiliser?
Je sais qu'en DOS, Windows limite les caractères à 15 il me semble, et pas d'espace autorisé. Mais ici, il y en a beaucoup moins.

Par contre j'ai toujours un petit souci au niveau de ma variable import_file.
En mettant le paramètre %~fs1 dans toutes les boucles, ça marche impeccable mais j'aimerais assigner la valeur du paramètre à ma variable histoire que ce soit plus parlant.

Code:

set import_file =%~fs1
echo %import_file%

for /f "tokens=6 delims=; skip=2" %%r in (%import_file%) do (
      dsadd  ou "OU=%%r,DC=nettech,DC=lan"
      echo UO %%r cree avec succes! 
   )


Problème, dès que j'essaye ce code, je vois que le 1er echo est désactivé (pas de valeur surement).
La ligne du for m'indique:
Code:
for /f "tokens=6 delims=; skip=2" %r in ((null))





______________________________________________________
Ne fais rien d'inutile.
Répondre en citant
Message Problème paramètre envoyé d'un vbs et récupéré dans bat 
Bonjour
mes meilleurs voeux pour 2013

essaie ceci :

Code:
set import_file =%~fs1
echo %import_file%
 
for /f "tokens=6 delims=; skip=2" %%r in (type "%import_file%") do (
      dsadd  ou "OU=%%r,DC=nettech,DC=lan"
      echo UO %%r cree avec succes!
   )



pour le souci précédent tu l'as dit toi meme si le fichier n est pas dans le meme dossier il faut indiquer le chemin
ET POUr le chemin long il faut mettre des guillements


Code:
REM INDIQUER LE CHEMIN ENTOURER DE GUILLEMENT PORU LES CHEMINS LONGS
set chemin=%systemdrive%
for /f "tokens=6 delims=; skip=2" %%r in (type "%chemin%\exemple.csv") do (
      dsadd  ou "OU=%%r,DC=domain,DC=lan"
      echo UO %%r cree avec succes!
   )





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message Problème paramètre envoyé d'un vbs et récupéré dans bat 
Merci Laddy, à toi également. Smile

Et merci pour les explications, je testerai demain si j'ai un moment.




______________________________________________________
Ne fais rien d'inutile.
Message Problème paramètre envoyé d'un vbs et récupéré dans bat 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch