web-dev-qa-db-ja.com

cmd.exe / kスイッチ

Cmdを使用してディレクトリに切り替えてからバッチファイルを実行しようとしています

例えば.

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

私も試しました(成功せずに)

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

最初の行(cmd/k)は正常に実行されるようですが、2番目のコマンドは実行されません。 OSとしてVistaを使用しています

27
Mike

正しい構文は次のとおりです。

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

ssgはすでに正解を投稿しています。 cdコマンドに/ dスイッチのみを追加します(例:cd /d drive:\directory)。これにより、現在のディレクトリがcdするディレクトリとは異なるドライブにある場合にコマンドが機能するようになります。

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

または、なぜcmd /k c:\myfolder\startbatch.bat、 そして、やります cd c:\myfolder .batファイルに?

2
nothrow

これに対処する回答が表示されないため、名前にスペースが含まれるディレクトリにアクセスする必要がある場合は、たとえば引用符を追加できます

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

PowerShellから、バッククォートを使用してクォートをエスケープする必要があります `

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

エスケープされた引用符に注意してください

`"

パス文字列内:

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

これにより、cmdで適切なコマンド、つまり、動作するはずの引用符で囲まれたパスが実行されます。

上記のコマンド例は、MSVC開発者コマンドプロンプトを初期化し、PowerShellに戻り、環境を継承し、MSVCツールへのアクセスを許可します。

1
dtasev

&または&&をWindowsのコマンド区切り文字として使用できます。

例:

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

この質問をコメントで見たが、まだコメントできないため、これを回答として提供します。

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

動作し、スペースがある場合:

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

私が理解しているように、コマンドは"cd "c:\myfolder" & startbatch.bat"としてcmdに渡され、その後cd "c:\myfolder"&startbatch.batに分割され、残りの" "はパスを文字列として扱います。

達成したい内容に応じて、&&|、および||を使用することもできます。

0
Knut Gjerden