我使用PowerShell
读取了一些文件,并相应地更改了当前目录,但我所能做的就是更改当前PowerShell
的当前目录,而不是调用者的目录(cmd.exe环境,称为ps1文件)。我试过的事情:
powershell ch-dir.ps1 | cd
(显然不会起作用,因为CD
是内部命令)
powershell cd $myDir
(更改PowerShell
中的当前目录,但是当脚本退出时,cmd
环境仍在原始目录中
我真的希望我不需要找到脚本的调用者进程(cmd),然后通过强制进行更改...(或者更糟糕的是 - 保存我想要的目录) env-var然后cd %my_var%
,因为它需要两行命令)
答案 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
调用它。