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

 


Dernière réponse
Sujet : Executer batch en réseau
sdeville 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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
sdeville 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
Tounet

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.

michel123 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+
Sm@No 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!
Sm@No Ou tu a utiliser GPEDIT.msc et dans script de démarrage tu a mis ton script?
Sm@No 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:\?
michel123 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
Sm@No 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!
michel123 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 ?
Sm@No 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++!
michel123 C'est rien =)
LaTeX_ arf j'avais pas pigé ce que faisait pushd, au temps pour moi :D
michel123 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...
LaTeX_ t'utilise "net use"  ou "subst" :o
Tounet

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 ...

michel123 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)
LaTeX_ et tout bêtement créer un lecteur réseau, ce serait pas plus simple ?   :D
michel123 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
Tounet 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"
michel123 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
Tounet

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.

michel123 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 =)
Sm@No 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.
michel123 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
com21 Si tu montrais ton batch, ça serait plus simple... Parce que je ne vois pas trop pourquoi tu fais un "CD"  dans un batch
Sm@No 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!
sdeville desole je ne comprends pas. Publies ton batch qu'on regarde.
Mais rien ne t'empeche de faire des batches avec \\serveru\shgare\...
michel123 Sous XP
lebig sous quel OS utilises tu tes Batchs
 
michel123 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.

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