|
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 |
Aperçu |
---|
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 | 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 | 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 | 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. |