Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2923 connectés 

  FORUM HardWare.fr
  Windows & Software

  Executer batch en réseau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Executer batch en réseau

n°2091555
michel123
Posté le 11-07-2005 à 22:28:50  profilanswer
 

Bonjour,
 
J'ai un problème plutôt ennuyeux : mes batchs ms dos ne se lancent pas correctement en réseau, en fait le problème c'est que le repertoire par défault n'est plus celle où se trouve le fichier parce que la commande CD ne supporte pas les euh... chemins unc ("CMD does not support UNC paths as current directories." ).
 
Donc pour pallier ce problème j'ai trouver une astuce : en utilisant pushd qui lui le supporte. MAIS comment faire pour mettre une ligne avec pushd dans un fichier bat sachant que dès le lancement de celui-ci, je perds le chemin du dossier où se trouvais le fichier ?
 
Voilà, j'espère que j'ai été clair, sinon demandez moi de réexpliquer. Merci d'avance.

mood
Publicité
Posté le 11-07-2005 à 22:28:50  profilanswer
 

n°2091738
lebig
Posté le 12-07-2005 à 09:35:17  profilanswer
 

sous quel OS utilises tu tes Batchs
 

n°2091769
michel123
Posté le 12-07-2005 à 10:02:39  profilanswer
 

Sous XP

n°2092218
sdeville
Posté le 12-07-2005 à 14:36:11  profilanswer
 

desole je ne comprends pas. Publies ton batch qu'on regarde.
Mais rien ne t'empeche de faire des batches avec \\serveru\shgare\...

n°2092331
Sm@No
Posté le 12-07-2005 à 15:47:07  profilanswer
 

Quand tu fait un pushd tu efface et remplace par la valeur derriere et alors tu fait popd et tu appel le chemin par contre je comprend pas trop ce qui cloche donc poste ton script on pourra plus t'aider.
C:\>pushd /?
Stocke le répertoire en cours pour utilisation par la commande POPD, ensuite
passe au répertoire spécifié.
 
PUSHD [chemin | ..]
 
  chemin     Répertoire permettant de définir le répertoire en cours.
 
Si les extensions de commandes sont activées, la commande PUSHD accepte
les chemins réseau en plus des lettres de lecteurs et chemins usuels.
Si un chemin réseau est spécifié, PUSHD associera une lettre de lecteur
temporaire à la ressource réseau spécifiée puis changera le lecteur
et le répertoire en cours, en utilisant la lettre ainsi définie. Les
lettres de lecteur temporaire sont données à partir de Z: en descendant,
en utilisant la première lettre libre trouvée.
L'aide CMD de windows c'est pratique!

n°2092337
com21
Modérateur
real men don't click
Posté le 12-07-2005 à 15:50:48  profilanswer
 

Si tu montrais ton batch, ça serait plus simple... Parce que je ne vois pas trop pourquoi tu fais un "CD"  dans un batch


---------------
Cherche geekette | Traquez vos billets d'€ | Don du sang | Don de moelle osseuse
n°2092503
michel123
Posté le 12-07-2005 à 18:15:58  profilanswer
 

D'abord, merci pour vos réponses.
 
sdeville : le problème c'est que mon batch est un peu long, et il y a plein de choses inutiles pour comprendre, alors je te fais plutôt un exemple type du problème
 
@ECHO OFF
CALL BAT\fichier.bat
 
Peut importe ce que contient fichier.bat, en le lançant au favoris réseau j'ai ça :
 
'\\Pc2\Documents'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.
 
Donc, Sm@No, j'ai bien compris comment fonctionne pushd mais le problème c'est comment l'utiliser, j'ai envie de faire un pushd %CD% mais j'ai plus %CD% dès que je le lance

n°2092899
Sm@No
Posté le 13-07-2005 à 08:19:58  profilanswer
 

Quand tu fait un call tu peu envoyer des parametres:
Comme sa aussi plus simple:
@\\SERVEUR\netlogon\UserScript PARAM1
 
ensuite tu utilise %i% par exemple pushd %i% i qui est la var envoyer dans script UserScript.

n°2093477
michel123
Posté le 13-07-2005 à 18:27:39  profilanswer
 

Je vois ce que tu veux faire, mais ça ne marche pas si on le lance à partir du favoris réseau (je veux que ça marche aussi bien par ligne de commande que par double-clik).
 
En fait, j'ai même l'impression qu'on ne peut pas lancer un batch en gardant le repertoire par défault, puisqu'on ne la plus après. Alors j'ai pensé à une autre solution : si je créé un fichier exe qui lui supporte les chemins réseaux et qui lance ensuite le fichier bat avec en argument le chemin de l'exe, vous en pensez quoi ?
 
Comme je commence à faire du c++, j'ai essayé comme ça ( j'ai vraiment galéré pour trouver comment faire arf )
 
#include <windows.h>
#include <iostream.h>
 
void GetChemin(char *chemin, DWORD taille)
{
char *c;
c = chemin + GetModuleFileName(NULL,chemin,taille);
while(*c!='\\')
c--;
*c=0;
}
 
void open(char *file, char *arguments)
{
SHELLEXECUTEINFO ExecuteInfo;    
memset(&ExecuteInfo, 0, sizeof(ExecuteInfo));
     
ExecuteInfo.cbSize       = sizeof(ExecuteInfo);
ExecuteInfo.fMask        = 0;                
ExecuteInfo.hwnd         = 0;                
ExecuteInfo.lpVerb       = "open";                      
ExecuteInfo.lpFile       = file;
ExecuteInfo.lpParameters = arguments;
ExecuteInfo.lpDirectory  = 0;
ExecuteInfo.nShow        = SW_SHOW;
ExecuteInfo.hInstApp     = 0;    
if(ShellExecuteEx(&ExecuteInfo) == FALSE)
{
// erreur
}
}
 
int main()
{
 char path[MAX_PATH];
 GetChemin(path, MAX_PATH);
 int countpath=0;
 for (const char* cur = path; *cur != '\0'; cur++)
 {
  countpath++;
 }
 char fullpath[MAX_PATH];
 GetChemin(fullpath, MAX_PATH);
 fullpath[countpath]='\\';
 fullpath[countpath+1]='a';
 fullpath[countpath+2]='.';
 fullpath[countpath+3]='b';
 fullpath[countpath+4]='a';
 fullpath[countpath+5]='t';
 fullpath[countpath+6]='\0';
 open(fullpath,path);
 cout<<path ;
 return 0;
}
 
Ca a l'air de marcher, mais j'aime pas cette méthode, vous savez si y'a pas un autre moyen ? (par le batch bien sur)
Et bien sur, si quelqu'un a quelques remarques/améliorations sur mon code, ce serait sympa =)

n°2093492
Tounet
I love apples
Posté le 13-07-2005 à 19:02:27  profilanswer
 

michel123 a écrit :

Bonjour,
 
J'ai un problème plutôt ennuyeux : mes batchs ms dos ne se lancent pas correctement en réseau, en fait le problème c'est que le repertoire par défault n'est plus celle où se trouve le fichier parce que la commande CD ne supporte pas les euh... chemins unc ("CMD does not support UNC paths as current directories." ).
 
Donc pour pallier ce problème j'ai trouver une astuce : en utilisant pushd qui lui le supporte. MAIS comment faire pour mettre une ligne avec pushd dans un fichier bat sachant que dès le lancement de celui-ci, je perds le chemin du dossier où se trouvais le fichier ?
 
Voilà, j'espère que j'ai été clair, sinon demandez moi de réexpliquer. Merci d'avance.


 
La question est : Pourquoi as tu besoin de garder le chemin d'ou est lancé le batch ?
La pluspart du temps, je dirais par convention en fait, les batch dos (quand il s'agit de batch de connexion) sont copiés en local avant l'execution.
En clair dis nous exactement ce que tu veux faire, on pourra p-e mieux t'aider.


---------------
Les hommes n'acceptent le changement que dans la nécessité et ils ne voient la nécessité que dans la crise.
mood
Publicité
Posté le 13-07-2005 à 19:02:27  profilanswer
 

n°2093513
michel123
Posté le 13-07-2005 à 19:17:44  profilanswer
 

Je sais pas trop ce que tu entends par batch de connexion, mais je préfère ne pas copier les fichiers en local. En fait mon batch sert à  mettre à jour XP au lieu de passer par windows update (je sais qu'il existe des programmes du genre SUS mais ça marche que pour les patch critiques et certains sont payants, en plus c'est pour un particulier, pas une entreprise).
 
Donc ces batchs sont lancé après une installation XP, par le réseau. Mais il y a pas que ça, il y a aussi des applications qu'on peut installer par ce batch (winrar...), donc on doit aussi pouvoir le lancer par doubleclik

n°2093527
Tounet
I love apples
Posté le 13-07-2005 à 19:27:07  profilanswer
 

Ca repond pas tjrs pas a ma question, pkoi t'as besoin de connaitre le chemin d'ou est lance le batch ?
Tu peux pas mettre ce chemin dans une variable au demarrage du script ?
 
SET monchemin="\\serveur\share\mes patchs"


---------------
Les hommes n'acceptent le changement que dans la nécessité et ils ne voient la nécessité que dans la crise.
n°2093614
michel123
Posté le 13-07-2005 à 20:29:05  profilanswer
 

Ah oui, c'est pour faire un pushd %chemin%. Bien sur je peux mettre ce chemin dans le bat mais pour faire plus portable je le mets pas

n°2093677
LaTeX_
Pôôôpaa !
Posté le 13-07-2005 à 21:20:03  profilanswer
 

et tout bêtement créer un lecteur réseau, ce serait pas plus simple ?   :D

n°2093689
michel123
Posté le 13-07-2005 à 21:29:32  profilanswer
 

En faisant "Connecter un lecteur réseau..." ? Ben c'est mieux si c'était automatique dès le lancement du batch ! (a propos, pushd créer aussi un lecteur réseau dès qu'il détecte un chemin réseau)

n°2093691
Tounet
I love apples
Posté le 13-07-2005 à 21:31:39  profilanswer
 

michel123 a écrit :

Ah oui, c'est pour faire un pushd %chemin%. Bien sur je peux mettre ce chemin dans le bat mais pour faire plus portable je le mets pas


 
le fait de definir tes variables en debut de script ne gene en rien la portabilité justement, bien au contraire ...


---------------
Les hommes n'acceptent le changement que dans la nécessité et ils ne voient la nécessité que dans la crise.
n°2093697
LaTeX_
Pôôôpaa !
Posté le 13-07-2005 à 21:34:43  profilanswer
 

t'utilise "net use"  ou "subst" :o

n°2093713
michel123
Posté le 13-07-2005 à 21:54:51  profilanswer
 

Ah, pour subst je connais, pour net use, après quelques recherches sur google je crois qu'il fait la même chose que subst... Mais c'est aussi la même chose que pushd ! (sisi)
 
De toute façon, mon problème c'est de faire en sorte que le batch se créer automatiquement un lecteur réseau dès qu'il démarre, pushd remplit bien son rôle sauf que je n'ai rien à mettre après pushd (c'est dit au début du post pourquoi)
 
Après, j'ai pu faire un exe qui lui contient le chemin qu'il transmet, mais c'est tout moche franchement de passer par un exe, mais si c'est le seul moyen...

n°2093728
LaTeX_
Pôôôpaa !
Posté le 13-07-2005 à 22:06:55  profilanswer
 

arf j'avais pas pigé ce que faisait pushd, au temps pour moi :D

n°2093742
michel123
Posté le 13-07-2005 à 22:18:01  profilanswer
 

C'est rien =)

n°2094718
Sm@No
Posté le 15-07-2005 à 10:40:11  profilanswer
 

Je crois avoir compris ton pb tu cherche a executer ton script via les favories reseau est il est placé dans netlogon vue la tete de ton MSG d'erreur!
1. Il marche ton batch au démarrage de wind?
2. si tu veut k il marche par double cliqu faut le mettre ailleur: sur un partage reseau!
Plus d'info si j'ai rien compris!
Parceque se que tu veut faire doit marché par script sans te casser la tete avec du C++!

n°2094743
michel123
Posté le 15-07-2005 à 11:03:50  profilanswer
 

netlogon ? Euh mon batch est dans le dossier partagé de xp, "C:\Documents and Settings\All Users\Documents", et que veux tu dire par "au démarrage de windows" ? Et le partage réseau, c'est bien la ou j'ai mis mes batchs non ?

n°2094748
Sm@No
Posté le 15-07-2005 à 11:08:52  profilanswer
 

Tu veut dir que tu n a pas de serveur NT 2000 ou 2003?
Et bien c'est different si tu n a pas de serveur!

n°2094756
michel123
Posté le 15-07-2005 à 11:14:11  profilanswer
 

Euh, attends, c'est pas pour une entreprise, c'est pour moi, un particulier ! Donc pas de serveur, désolé si je te l'ai pas dis

n°2094762
Sm@No
Posté le 15-07-2005 à 11:17:14  profilanswer
 

Pour executer ton script DOS tu a coller dans le Autoexec.bat
un truc du style start monscript.bat et par exemple copier ton script sous la racine C:\?

n°2094763
Sm@No
Posté le 15-07-2005 à 11:18:01  profilanswer
 

Ou tu a utiliser GPEDIT.msc et dans script de démarrage tu a mis ton script?

n°2094778
Sm@No
Posté le 15-07-2005 à 11:30:35  profilanswer
 

Si tu le lance via le autoexec et bien creer un script qui copiera une ligne dans le autoexec qui démarrera ton script du style:
exbatch:
@echo off
echo start monscript.bat>>C:\AUTOEXEC.bat
copy monscript.bat C:\monscript.bat
 
par exemple sa va copier ton script sous le C: et le lancera a chaque démarrage via l'autoexec.bat!
Sinon tu peu aussi le copier dans Démarrage sa marche aussi!

n°2094804
michel123
Posté le 15-07-2005 à 11:48:08  profilanswer
 

Non, je le lance pas de autoexec.bat, enfin je comprends pas ton idée, tu veux que je copie mon batch dans c: et que je le lance de la ? Mais pour que ça marche il aurait fallu que je copie tout le reste des fichiers qui va avec (c'est pas un batch seul en fait, mais avec des updates à installer)
 
Bref, c'est pas trop grave, j'ai quand même réussi à créer un programme en c++ qui arrange tout, donc je vais l'utiliser.
 
Merci à vous tous pour vos réponses, et plus particulièrement à Sm@No =)
 
A+

n°2095003
Tounet
I love apples
Posté le 15-07-2005 à 14:55:46  profilanswer
 

michel123 a écrit :

Non, je le lance pas de autoexec.bat, enfin je comprends pas ton idée, tu veux que je copie mon batch dans c: et que je le lance de la ? Mais pour que ça marche il aurait fallu que je copie tout le reste des fichiers qui va avec (c'est pas un batch seul en fait, mais avec des updates à installer)
 
Bref, c'est pas trop grave, j'ai quand même réussi à créer un programme en c++ qui arrange tout, donc je vais l'utiliser.
 
Merci à vous tous pour vos réponses, et plus particulièrement à Sm@No =)
 
A+


 
 
il serait bcp plus viable pour toi de mettre le chemin dont tu as besoin dans une variable en tete de script, et ce serait bcp plus portable qu'un executable compilé qui ne marchera p-e pas sur tous les environnements, mais bon tu fais comme tu veux.


---------------
Les hommes n'acceptent le changement que dans la nécessité et ils ne voient la nécessité que dans la crise.
n°2098283
sdeville
Posté le 19-07-2005 à 10:09:22  profilanswer
 

ca part dans tous les sens!
 
Pour répondre au besoin, comme le dit Latex_, net use:
 
net use g: \\Pc2\Documents
 
ensuite tu travailles sur g:
 
et a la fin du batch:
net use g: /d

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software

  Executer batch en réseau

 

Sujets relatifs
reseau wifi a mettre en placepb acces reseau
[Word] Problème bizarre d'enregistrement sur réseau.Monitoring Réseau
comment exécuter explorer.exe???Comment créer un réseau virtuel (VPN)
ca rame grave le reseau ! helpJeux réseau Local / Internet
Réseau sans fil avec accès "immédiat"Supprimer mon reseau et les groupes de travail
Plus de sujets relatifs à : Executer batch en réseau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR