如何使用PowerShell更改cmd的current-dir?

时间:2013-04-16 19:27:19

标签: powershell command-line windows-8 command-line-interface

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

powershell ch-dir.ps1 | cd

(显然不会起作用,因为CD是内部命令)

powershell cd $myDir

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

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

2 个答案:

答案 0 :(得分:2)

我不确定这是否符合您的需求,但是如果您设置它以便PowerShell脚本中唯一的输出是您想要的新工作目录,那么您可以这样做:

c:\>for /F %i IN ('powershell -noprofile -command "write-output 'c:\users'" ') DO @cd %i
c:\Users>

答案 1 :(得分:0)

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

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

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