Je suis plus récent dans la création de fichiers batch. J'essaie d'exécuter une commande qui ouvrira Windows PowerShell dans un répertoire spécifique, puis une fois pour exécuter une commande.
Jusqu'à présent, j'ai ce qui suit. Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'"
Cela semble fonctionner pour ouvrir PowerShell au bon endroit, mais je ne parviens pas à le faire exécuter ensuite la commande. node sp
.
J'ai essayé ce qui suit sans succès PowerShell -NoExit -Command "Write-Host 'node sp'"
En outre, est-il possible d'ouvrir Windows PowerShell dans l'écran d'affichage bleu plutôt que dans la fenêtre CMD (noir / blanc)?
Réponses:
Comme vous n’avez pas fourni votre fichier de batte complet, je suppose que c’est
C'est la mauvaise approche. Vous démarrez d’abord un Powershell qui change de répertoire et reste ouvert. Si vous quittez ce PowerShell, le fichier bat va démarrer le deuxième PowerShell.
Vous devez exécuter un PowerShell et le laisser exécuter les deux commandes. Une façon est de
Une autre méthode consiste à écrire un fichier de script PowerShell tel que MyScript.ps1 avec le contenu suivant:
et démarrez PowerShell en ne lui donnant pas la commande à exécuter mais le script à exécuter (voir aussi ce et ce Question StackOverflow). Vous pouvez soit exécuter cette commande directement, soit la placer dans un fichier bat, ou même l'utiliser comme commande à exécuter dans un fichier lk:
Un problème avec PowerShell est que, par défaut, il n'exécute pas de scripts non signés (de manière cryptographique). Le moyen facile de résoudre ce problème est le
-ExecutionPolicy Bypass
paramètre.la source
PowerShell.exe -ExecutionPolicy Bypass -File "RunProductDev.ps1"
, lorsque je clique dessus, CMD s’ouvre un instant puis se ferme, mais mon RunProductDev.ps1 ne semble jamais fonctionner ni s’ouvrir. Ils sont tous deux assis sur mon bureau en ce moment, alors ils sont dans le même répertoire. Dans le ps1 j'aicd 'c:\Dev\ProductDev' Write-Host 'node sp'
node sp
la commande est fondamentalement unserve
pour exécuter une application, c’est donc une commande constamment en cours d’exécution / surveillance jusqu’à ce que je la quitte.-noexit
. J'ai mis à jour ma réponse afin qu'elle soit incluse.