windows powershell 如何进入文件目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows powershell 如何进入文件目录相关的知识,希望对你有一定的参考价值。

1、首先打开电脑,然后打开Powershell程序窗口。


2、然后在新的界面里使用md命令来创建文件夹。


3、之后在新的界面里按键盘“回车键”后命令执行成功。


4、然后在新的界面里就可以看到windows powershell 进入文件目录成功了。

参考技术A e: 回车 表示切换到E盘
c: 回车 表示切换到C盘

切换之后
cd 目录名 就可以进入了。
如果要进入多层目录用/隔开
cd 目录名/目录名追问

C:\Program Files\mysql\MySQL Server 5.5\bin
当我要进入这个目录的时候,我是这样写的原来
先 cd \ 进入C盘根目录;
然后
cd \Program Files\MySQL\MySQL Server 5.5\bin
在 CMD 中这个命令是可行的。。
但在 powerShell 第二步有错。。

按照你说的我第二步是这样写的。
cd Program Files\MySQL\MySQL Server 5.5\bin
但也有错。。
cd C\Program Files\MySQL\MySQL Server 5.5\bin
同样有错。

追答

目录名不能有空格
你试试把整个目录名用引号引起来。
cd “Program Files\MySQL\MySQL Server 5.5\bin”

本回答被提问者和网友采纳
参考技术B

Windows PowerShell进入文件夹Program Files时如果报错


需要在文件夹加" ",如:C:\\> cd  c:\\"Program Files (x86)"

参考技术C 别名是cd 和批处理一样.
powershell里的命令是Set-Location等同于cd
参考技术D 这个与cmd有一点微妙的不同
进入哪个盘和cmd一样,比如进E盘就是:
E:再按回车

Powershell切换目录虽然也是cd,但是目录名必须要有双引号
比如我要进E盘的New文件夹,要输入:
cd “E:\New” 注意不能丢下双引号

设置Windows PowerShell环境变量

我发现设置PATH环境变量只会影响旧的命令提示符。 PowerShell似乎有不同的环境设置。如何更改PowerShell(v1)的环境变量?

注意:

我希望永久更改我的更改,因此每次运行PowerShell时都不必设置它。 PowerShell有配置文件吗?像Unix上的Bash配置文件?

答案

可以使用env: namespace / drive信息更改实际环境变量。例如,此代码将更新路径环境变量:

$env:Path = "SomeRandomPath";             (replaces existing path) 
$env:Path += ";SomeRandomPath"            (appends to existing path)

有一些方法可以永久保持环境设置,但如果您只是从PowerShell使用它们,那么使用您的配置文件启动设置可能要好得多。在启动时,PowerShell将运行它在My Documents文件夹下的WindowsPowerShell目录中找到的任何.ps1文件。通常,您已经有profile.ps1文件。我的电脑上的路径是

C:UsersJaredParDocumentsWindowsPowerShellprofile.ps1
另一答案

大多数答案都不是针对UAC。这涵盖了UAC问题。

首先通过choco install pscx安装PowerShell社区扩展:http://chocolatey.org/(您可能必须重新启动shell环境)。

然后启用pscx

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser #allows scripts to run from the interwebs, such as pcsx

然后使用Invoke-Elevated

Invoke-Elevated {Add-PathVariable $args[0] -Target Machine} -ArgumentList $MY_NEW_DIR
另一答案

@Michael Kropat's回答的基础上,我添加了一个参数来预先添加现有PATHvariable的新路径,并检查以避免添加不存在的路径:

function Add-EnvPath {
    param(
        [Parameter(Mandatory=$true)]
        [string] $Path,

        [ValidateSet('Machine', 'User', 'Session')]
        [string] $Container = 'Session',

        [Parameter(Mandatory=$False)]
        [Switch] $Prepend
    )

    if (Test-Path -path "$Path") {
        if ($Container -ne 'Session') {
            $containerMapping = @{
                Machine = [EnvironmentVariableTarget]::Machine
                User = [EnvironmentVariableTarget]::User
            }
            $containerType = $containerMapping[$Container]

            $persistedPaths = [Environment]::GetEnvironmentVariable('Path', $containerType) -split ';'
            if ($persistedPaths -notcontains $Path) {
                if ($Prepend) {
                    $persistedPaths = ,$Path + $persistedPaths | where { $_ }
                    [Environment]::SetEnvironmentVariable('Path', $persistedPaths -join ';', $containerType)
                }
                else {
                    $persistedPaths = $persistedPaths + $Path | where { $_ }
                    [Environment]::SetEnvironmentVariable('Path', $persistedPaths -join ';', $containerType)
                }
            }
        }

        $envPaths = $env:Path -split ';'
        if ($envPaths -notcontains $Path) {
            if ($Prepend) {
                $envPaths = ,$Path + $envPaths | where { $_ }
                $env:Path = $envPaths -join ';'
            }
            else {
                $envPaths = $envPaths + $Path | where { $_ }
                $env:Path = $envPaths -join ';'
            }
        }
    }
}
另一答案

我的建议就是这个,我已经测试了这个将C: oracle x64 bin永久添加到Path,这很好用。

$ENV:PATH

第一种方法就是:

$ENV:PATH=”$ENV:PATH;c:path	ofolder”

但是这个改变并不是永久性的,$ env:只要你关闭你的powershell终端并重新打开它,路径就会默认回到之前的状态。这是因为您已在会话级别而不是源级别(即注册表级别)应用了更改。要查看$ env:path的全局值,请执行以下操作:

Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerEnvironment’ -Name PATH

或者,更具体地说:

(Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerEnvironment’ -Name PATH).path

现在要更改它,首先我们捕获需要修改的原始路径:

$oldpath = (Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerEnvironment’ -Name PATH).path

现在我们定义新路径应该是什么样子,在这种情况下我们要附加一个新文件夹:

$newpath = “$oldpath;c:path	ofolder”

注意:确保$ newpath看起来如何看,如果没有,那么你可能会损坏你的操作系统。

现在应用新值:

Set-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerEnvironment’ -Name PATH -Value $newPath

现在做一个最终检查它看起来你期望它:

(Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerEnvironment’ -Name PATH).Path

您现在可以重新启动powershell终端(甚至重启机器)并看到它不会再次回滚到它的旧值。请注意,路径的顺序可能会改变,因此它按字母顺序排列,因此请确保检查整行,以便更容易,您可以使用分号作为分隔符将输出拆分为行:

($env:path).split(“;”)
另一答案

我尝试优化SBF'sMichael's代码以使其更紧凑。

我依赖于PowerShell的类型强制,它自动将字符串转换为枚举值,所以我没有定义查找字典。

我还根据条件拉出了将新路径添加到列表中的块,以便工作完成一次并存储在变量中以便重复使用。

然后根据$PathContainer参数将其永久或仅应用于Session。

我们可以将代码块放在我们直接从命令提示符调用的函数或ps1文件中。我选择了DevEnvAddPath.ps1。

param(
    [Parameter(Position=0,Mandatory=$true)][String]$PathChange,

    [ValidateSet('Machine', 'User', 'Session')]
    [Parameter(Position=1,Mandatory=$false)][String]$PathContainer='Session',
    [Parameter(Position=2,Mandatory=$false)][Boolean]$PathPrepend=$false
)

[String]$ConstructedEnvPath = switch ($PathContainer) { "Session"{${env:Path};} default{[Environment]::GetEnvironmentVariable('Path', $containerType);} };
$PathPersisted = $ConstructedEnvPath -split ';';

if ($PathPersisted -notcontains $PathChange) {
    $PathPersisted = $(switch ($PathPrepend) { $true{,$PathChange + $PathPersisted;} default{$PathPersisted + $PathChange;} }) | Where-Object { $_ };

    $ConstructedEnvPath = $PathPersisted -join ";";
}

if ($PathContainer -ne 'Session') 
{
    # Save permanently to Machine, User
    [Environment]::SetEnvironmentVariable("Path", $ConstructedEnvPath, $PathContainer);
}

# Update the current session
${env:Path} = $ConstructedEnvPath;

我为DevEnvRemovePath.ps1做了类似的事情。

param(
    [Parameter(Position=0,Mandatory=$true)][String]$PathChange,

    [ValidateSet('Machine', 'User', 'Session')]
    [Parameter(Position=1,Mandatory=$false)][String]$PathContainer='Session'
)

[String]$ConstructedEnvPath = switch ($PathContainer) { "Session"{${env:Path};} default{[Environment]::GetEnvironmentVariable('Path', $containerType);} };
$PathPersisted = $ConstructedEnvPath -split ';';

if ($PathPersisted -contains $PathChange) {
    $PathPersisted = $PathPersisted | Where-Object { $_ -ne $PathChange };

    $ConstructedEnvPath = $PathPersisted -join ";";
}

if ($PathContainer -ne 'Session') 
{
    # Save permanently to Machine, User
    [Environment]::SetEnvironmentVariable("Path", $ConstructedEnvPath, $PathContainer);
}

# Update the current session
${env:Path} = $ConstructedEnvPath;

到目前为止,他们似乎工作。

另一答案

打开PowerShell并运行:

[Environment]::SetEnvironmentVariable("PATH", "$ENV:PATH;<path to exe>", "USER")
另一答案

如果,在PowerShell会话期间的某个时间,您需要临时追加到PATH环境变量,您可以这样做:

$env:Path += ";C:Program FilesGnuWin32in"
另一答案

您还可以使用以下命令永久修改用户/系统环境变量(即,将在shell重新启动时保持持久性):

### Modify a system environment variable ###
[Environment]::SetEnvironmentVariable
     ("Path", $env:Path, [System.EnvironmentVariableTarget]::Machine)

### Modify a user environment variable ###
[Environment]::SetEnvironmentVariable
     ("INCLUD

以上是关于windows powershell 如何进入文件目录的主要内容,如果未能解决你的问题,请参考以下文章

windows powershell怎么关闭

怎么打开windows powershell

运行PowerShell进程时如何阻止Windows 10机器休眠/休眠?

Windows下计算文件MD5和SHA256等摘要的方法(利用PowerShell)

Windows powershell 总是运行不了,提示第一行第一个字符错误

我们如何使用Windows Powershell脚本替换文本文件中的日期?