1

我使用 读取了一些文件PowerShell,并相应地更改了当前目录,但我所能做的就是更改 currentPowerShell的当前目录,而不是调用者的目录(调用该 ps1 文件的 cmd.exe 环境)。我尝试过的事情:

powershell ch-dir.ps1 | cd

(显然,这是行不通的,因为CD是内部命令)

powershell cd $myDir

(更改当前目录PowerShell,但是当脚本退出时,cmd环境仍然在原始目录中)

我真的希望我不需要找到脚本的调用者进程(cmd),并强制更改它的 cur-dir ......(或者更糟 - 将我想要的目录保存在一些 env-var 中然后cd %my_var%因为它需要两行命令)

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 提示符正在托管您的 powershell 会话,除非您能找到一种方法将退出代码返回到提示符,该提示符将(在退出代码 99999 上)将目录更改为(预定义值,切换?)。就 powershell 而言,它们是不同的过程。

这是一个很好的示例供您尝试:打开 cmd 提示符。打开任务管理器,找到 cmd.exe 在你的 cmd 提示符下键入 Powershell 查看 powershell 作为不同的进程(检查 PID。)结束 powershell 进程。观察会发生什么。

或者,如果您需要根据您的 powershell 脚本中的逻辑在特定目录中从 cmd 运行某些东西,您可以使用cmd /cPowershell 中的 from 调用它。

于 2013-04-16T19:41:01.583 回答