Cmdを使用してディレクトリに切り替えてからバッチファイルを実行しようとしています
例えば.
cmd /k cd "C:\myfolder"
startbatch.bat
私も試しました(成功せずに)
cmd cd /k cd "C:\myfolder" | startbatch.bat
最初の行(cmd/k)は正常に実行されるようですが、2番目のコマンドは実行されません。 OSとしてVistaを使用しています
正しい構文は次のとおりです。
cmd /k "cd c:\myfolder & startbatch.bat"
ssgはすでに正解を投稿しています。 cd
コマンドに/ dスイッチのみを追加します(例:cd /d drive:\directory
)。これにより、現在のディレクトリがcdするディレクトリとは異なるドライブにある場合にコマンドが機能するようになります。
cmd cd /k "cd C:\myfolder; startbatch.bat"
または、なぜcmd /k c:\myfolder\startbatch.bat
、 そして、やります cd c:\myfolder
.batファイルに?
これに対処する回答が表示されないため、名前にスペースが含まれるディレクトリにアクセスする必要がある場合は、たとえば引用符を追加できます
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ツールへのアクセスを許可します。
&
または&&
をWindowsのコマンド区切り文字として使用できます。
例:
cmd cd /K "cd C:\myfolder && startbatch.bat"
この質問をコメントで見たが、まだコメントできないため、これを回答として提供します。
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
に分割され、残りの" "
はパスを文字列として扱います。
達成したい内容に応じて、&&
、|
、および||
を使用することもできます。