1

を使用していくつかのファイルを読み取り、それに応じて現在のディレクトリを変更しますが、呼び出し元のディレクトリ(そのps1ファイルを呼び出したcmd.exe環境)ではなく、現在のディレクトリPowerShellを変更することしかできません。PowerShell私が試したこと:

powershell ch-dir.ps1 | cd

CD(内部コマンドであるため、明らかに機能しません)

powershell cd $myDir

( の現在のディレクトリを変更PowerShellしますが、スクリプトが終了しても、cmd環境は元のディレクトリのままです)

スクリプトの呼び出し元プロセス (cmd) を見つけて、強制的に cur-dir を変更する必要がないことを本当に願っています... (さらに悪いことに、必要なディレクトリをいくつかの env-var に保存するために)そして、cd %my_var%2行のコマンドが必要になるため)

4

2 に答える 2

2

これがあなたのニーズを満たすかどうかはわかりませんが、PowerShell スクリプトからの唯一の出力が目的の新しい作業ディレクトリになるように設定した場合は、次のようにすることができます。

c:\>for /F %i IN ('powershell -noprofile -command "write-output 'c:\users'" ') DO @cd %i
c:\Users>
于 2013-04-16T22:39:48.923 に答える
0

cmd プロンプトは、(終了コード 99999 で) ディレクトリを (事前定義された値、switch?) に変更するプロンプトに終了コードを返す方法を見つけられない限り、PowerShell セッションをホストしています。powershell に関する限り、それらは異なるプロセスです。

試してみるのに適した例を次に示します。cmd プロンプトを開きます。タスク マネージャーを開き、cmd.exe を見つけます。コマンド プロンプトで Powershell と入力します。Powershell を別のプロセスとして表示します (PID を確認します)。powershell プロセスを終了します。何が起こるか見てください。

または、PowerShell スクリプトのロジックに基づいて特定のディレクトリの cmd から何かを実行する必要がある場合は、Powershellcmd /c内の from で呼び出すことができます。

于 2013-04-16T19:41:01.583 に答える