J'essaie de travailler avec un fichier .BAT ici, il devrait s'agir d'un script très simple mais je ne sais pas comment le faire (je ne le connais pas bien).
Ce que j'essaie de faire, c'est d'ouvrir une nouvelle fenêtre de commande: démarrez% windir%\system32\cmd.exe
Et le code que je tape derrière (une empreinte par exemple) devrait apparaître: echo "test in new window"
Comment puis-je faire ceci?
J'ai donc besoin de coder dans une nouvelle fenêtre de commande. Quelqu'un peut-il m'aider à ce sujet?
Vous avez peut-être déjà trouvé votre réponse car vous l’avez demandé il ya quelque temps. Mais j'ai essayé de faire quelque chose de similaire lors du codage de ror. Je voulais exécuter "Serveur Rails" dans une nouvelle fenêtre de commande afin de ne pas avoir à ouvrir une nouvelle commande et à retrouver mon chemin.
Ce que j’ai découvert, c’est d’utiliser le commutateur K comme ceci:
start cmd /k echo Hello, World!
démarrer avant que "cmd" ouvre l'application dans une nouvelle fenêtre et que "/ K" exécute "echo Hello, World!" après la nouvelle cmd est en place.
Vous pouvez également utiliser le commutateur/C pour quelque chose de similaire.
start cmd /C pause
Ceci exécutera alors "pause" mais fermera la fenêtre quand la commande est faite. Dans ce cas, après avoir appuyé sur un bouton. J'ai trouvé cela utile pour "Serveur Rails". Lorsque je ferme mon serveur dev, je n'ai pas à fermer la fenêtre après.
Utilisez les éléments suivants dans votre fichier de commandes:
start cmd.exe /k "more-batch-commands-here"
ou
start cmd.exe /c "more-batch-commands-here"
/ c Exécute la commande spécifiée par string puis se termine
/k Exécute la commande spécifiée par chaîne mais reste
Consultez la documentation de cmd.exe à l'aide de cmd /?
pour plus de détails.
La mise en forme correcte de la chaîne de commande devient un peu plus compliquée avec des espaces dans les arguments. Voir les exemples ci-dessous. Notez l'utilisation de guillemets doubles imbriqués dans certains exemples.
Exemples:
Exécutez un programme et transmettez un paramètre de nom de fichier:CMD /c write.exe c:\docs\sample.txt
Exécutez un programme et transmettez un nom de fichier long:CMD /c write.exe "c:\sample documents\sample.txt"
Espaces dans le chemin du programme:CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""
Espaces dans le chemin du programme + paramètres:CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""
Lancer demo1 et demo2:CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""
Source: http://ss64.com/nt/cmd.html
Ce n'est pas très facile.
La meilleure approche consiste à faire en sorte que la partie de votre script que vous souhaitez exécuter dans une "nouvelle fenêtre" se trouve dans un fichier .bat séparé. Cela pourrait ne pas être pratique si, par exemple, vous avez besoin de beaucoup d’état du reste de votre script (variables, etc.). Une option consiste à transmettre au fichier batch les valeurs dont vous avez besoin (par exemple, dir pour fonctionner):
start cmd.exe stuff.bat %this_dir%
Si vous avez un grand nombre d’états à transmettre, vous pouvez envisager de générer un fichier de commandes au moment de l’exécution:
set foo=Hello, World
set list_me=%userprofile%
set tmpdir=c:\windows\temp
set tmp=%tmpdir%\tmp.foo
del /q /f "%tmp%"
echo.echo %foo%>>"%tmp%"
echo.dir "%list_me%">>>"%tmp"
start cmd.exe "%tmp%"
del /q /f "%tmp%"
Évidemment, ceci est un exemple trivial.
Les réponses ci-dessus m'ont aidé. Mais encore besoin de comprendre. Voici un exemple de script que j'utilise pour démarrer 3 processus de développement Web. Il en résulte que 3 fenêtres restent ouvertes, car elles doivent fonctionner en permanence.
Mongo est globalement ajouté à mon chemin, je n'ai donc pas besoin de créer un CD comme je le fais pour les deux autres programmes. Bien sûr, le chemin d'accès à vos fichiers variera, mais j'espère que cela vous aidera.
:: Start MongoDB
start cmd.exe /k "mongod"
:: cd app directory, and start it
cd my-app
start cmd.exe /k "npm run dev"
:: cd to api server, and start that
cd ../my-app-api
start cmd.exe /k "npm run dev"
Merci à tous ici dans Stack Overflow; cette solution résout la question ci-dessus mais est étendue pour exécuter automatiquement ces tâches:
Je suppose que mon projet s’appelle "antiquorum."
Créez un fichier "init.bat" dans votre répertoire % USERPROFILE% (ouvrez une fenêtre cmd et examinez le chemin situé à gauche du curseur pour savoir ce qu'est% USERPROFILE%)
@echo off
cd C:/projects/Rails3/antiquorum
if "%1" == "antiquorum" GOTO start
if "%1" == "worker" GOTO worker
if "%1" == "server" GOTO server
if "%1" == "" GOTO end
:start
start cmd /k %USERPROFILE%\init.bat worker
start cmd /k %USERPROFILE%\init.bat server
TIMEOUT 30
start "" "http://localhost:3000/"
GOTO end
:server
Rails s
GOTO end
:worker
rake jobs:work
:end
Dans une nouvelle fenêtre de ligne de commande, tapez: C:> init antiquorum
Le code ouvre deux autres fenêtres de commande et un navigateur. TIMEOUT évite les erreurs dans le navigateur.
La section : start fait le travail. Vous pouvez exécuter les tâches 1, 2 ou 4 séparément en tapant params de la manière suivante: serveur, travailleur, ou aucun pour laisser un cmd ouvert dans racine de "antiquorum" projet.
Prendre plaisir.
Si je vous ai bien compris, votre fichier chauve-souris ouvrira l'invite de commande et affichera votre message à l'écran.
cmd.exe hello world
j'espère que cela t'aides.
pour exécuter un fichier python dans une nouvelle fenêtre de commande avec des espaces dans le nom du fichier:
start cmd.exe /k python "C:\Program Files\HelloWorld.py"
Ajout/k
entre deux commandesexécute les deux commandes _in order
_.
Exemple:
_cmd /k echo "hello"
_
cette commande ouvrira d'abord _command Prompt
_ puis exécutera _echo "hello"
_ commande