web-dev-qa-db-fra.com

commutateur cmd.exe / k

J'essaie de basculer vers un répertoire à l'aide de cmd, puis d'exécuter un fichier de commandes

par exemple.

cmd /k cd "C:\myfolder"
startbatch.bat

J'ai aussi essayé (sans succès)

cmd cd /k cd "C:\myfolder" | startbatch.bat

Bien que la première ligne (cmd/k) semble fonctionner correctement, mais la deuxième commande n'est jamais exécutée. J'utilise Vista comme OS

27
Mike

La syntaxe correcte est:

cmd /k "cd c:\myfolder & startbatch.bat"
46
Sedat Kapanoglu

ssg a déjà publié la bonne réponse. Je voudrais seulement ajouter le commutateur/d à la commande cd (par exemple. cd /d drive:\directory). Cela garantit que la commande fonctionne dans le cas où le répertoire actuel se trouve sur un lecteur différent de celui dans lequel vous souhaitez enregistrer le CD.

8
MBu
cmd cd /k "cd C:\myfolder; startbatch.bat"

ou, pourquoi ne courez-vous pas cmd /k c:\myfolder\startbatch.bat, et fait cd c:\myfolder dans le fichier .bat?

2
nothrow

Je ne vois pas de réponse à ce problème, donc si quelqu'un a besoin d'accéder à un répertoire qui a de l'espace dans son nom, vous pouvez ajouter des guillemets supplémentaires, par exemple

cmd.exe /K """C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"" & powershell.exe"

Depuis PowerShell, vous devez échapper aux guillemets à l'aide de la citation inverse `

cmd.exe /K "`"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat`" & powershell.exe"

Remarquez les citations échappées

`"

à l'intérieur de la chaîne de chemin:

"`"C:\my path\`""

Cela exécutera la commande appropriée dans cmd, c'est-à-dire le chemin entouré de guillemets qui devrait fonctionner.

L'exemple de commande ci-dessus initialisera l'invite de commande du développeur MSVC et reviendra à PowerShell, héritant de l'environnement et donnant accès aux outils MSVC.

1
dtasev

Vous pouvez utiliser & ou && comme séparateur de commandes dans Windows.

Exemple:

cmd cd /K "cd C:\myfolder && startbatch.bat"
1
RaffaelNagel

Je donne ceci comme réponse parce que j'ai vu cette question dans un commentaire et je ne peux pas encore commenter.

cmd /k "cd c:\myfolder & startbatch.bat"

fonctionne, et si vous avez des espaces:

cmd /k "cd "c:\myfolder" & startbatch.bat"

Si je comprends bien, la commande est passée à cmd comme "cd "c:\myfolder" & startbatch.bat", qui est ensuite décomposé en cd "c:\myfolder"&startbatch.bat à quel point les " " prend en charge le chemin sous forme de chaîne.

Vous pouvez aussi utiliser &&, | et || selon ce que vous voulez réaliser.

0
Knut Gjerden