如何在 Windows PowerShell 中使用 .bat 文件更改当前目录?

2024-04-17

我正在学习 Windows PowerShell,并且正在努力完成非常基本的任务,如何创建 .bat 文件来更改当前目录?简单的 .bat 文件cd mydir里面用得很好cmd.exe,但它在 PowerShell 中不起作用:

PS C:\Users\ET\test> dir


    Directory: C:\Users\ET\test


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        01/10/2021     10:57                mydir
-a----        01/10/2021     10:58             10 changeDir.bat


PS C:\Users\ET\test> type changeDir.bat
cd mydir
PS C:\Users\ET\test> .\changeDir.bat

C:\Users\ET\test>cd mydir
PS C:\Users\ET\test>

你看到执行.bat文件后我当前的目录没有改变。 使用时按预期工作cmd.exe:

C:\Users\ET\test>changeDir

C:\Users\ET\test>cd mydir

C:\Users\ET\test\mydir>

因为批处理文件(.bat, .cmd)运行在子进程 (via cmd.exe),你从根本上无法改变PowerShell 的当前目录.

  • 这适用于all在子进程中运行的调用,即对所有外部程序的调用以及对除 PowerShell 本身之外的脚本引擎解释的脚本的调用。
  • 虽然子进程' 工作目录已更改,这对caller(父进程),并且没有内置机制允许给定进程更改其父进程的工作目录(这将是一个危险的功能)。

下一个最好的事情是做你的.bat file 回声(输出)所需工作目录的路径并将结果传递给 PowerShellSet-Location https://learn.microsoft.com/powershell/module/microsoft.powershell.management/set-location cmdlet.

# Assuming that `.\changeDir.bat` now *echoes* the path of the desired dir.
Set-Location -LiteralPath (.\changeDir.bat)

一个简化的示例,通过cmd /c call:

Set-Location -LiteralPath (cmd /c 'echo %TEMP%')

如果您正在寻找一个导航到给定目录的简短便捷命令,不要使用批处理文件 -use a 电源外壳脚本或函数反而;例如。:

function myDir { Set-Location -LiteralPath C:\Users\ET\test\myDir }

执行中myDir然后导航到指定目录。

You can 将此功能添加到您的$PROFILE file https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Profiles,从而自动使其可用于future会议也.

你可以打开$PROFILE在文本编辑器中或以编程方式添加该函数,如下所示,这可确保按需创建文件及其父目录:

# Make sure the $PROFILE file exists.
If (-not (Test-Path $PROFILE)) { $null = New-Item -Force $PROFILE }

# Append the function definition to it.
@'

function myDir { Set-Location -LiteralPath C:\Users\ET\test\myDir }
'@ | Add-Content $PROFILE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Windows PowerShell 中使用 .bat 文件更改当前目录? 的相关文章

  • powershell有method_missing()吗?

    我一直在研究 powershell 的动态功能 我想知道一些事情 powershell 中是否有类似于 Ruby 的 method missing 的东西 您可以在其中设置 捕获所有方法 来动态处理对对象上不存在的方法的调用 不 不是真的
  • 将“-Filter”与变量一起使用

    我尝试过滤掉这样的东西 Get ADComputer Filter name like chalmw dm and Enabled eq true 这就像一个魅力 并且得到了我想要的 现在我想要 类似名称 部分作为变量 如下所示 Get A
  • 检查远程计算机上的进程所有者,并在所有者为 xyz 时将其终止

    嘿 我想在远程计算机上检查特定进程的进程所有者 并在所有者是 xyz 时杀死它 我已经成功地检查了它的主人 但我不知道当主人是 xyz 时如何杀死它 到目前为止我所拥有的 get wmiobject computername remoteP
  • 为什么powershell会收集未捕获的值并将其作为数组返回

    尽管我认为以下代码应该返回单个值 但它返回一个数组 function Do Something 123 return 456 Do Something GetType will say Object 我了解到 如果我想避免这种情况 我必须将
  • 跳转到脚本中的某些位置

    有没有办法让脚本跳转到命令提示符中的特定位置 例如 GOTO 我想让脚本结束时跳到开头 tag1 Read Host Enter tag cls sc exe tag1 start RemoteRegistry cls Start Slee
  • 如何清除通过“set /p var1=”从命令行设置的变量

    在 Windows 批处理文件中 我接受来自用户输入的变量set p var1 after var1已使用 我不知道如何重置 清除其值 如果我不重置 清除它的值 当用户遇到set p var1 再次 用户直接输入 之前的输入值仍然存在 我不
  • 用于根据源列表移动文件的 Powershell 脚本 (.txt

    我的目录中有数千个文件 pdf xls doc 它们都有相似的命名约定 类型 始终是常量字符串 即 账单或发票 帐户名称 帐号 type pdf 帐户名称 帐号 type doc 帐户名称 帐号 type xls 手头的任务是接收帐户名和帐
  • 使用 Powershell 从 JSON 获取值

    非常初学者的问题 我正在尝试使用 Powershell 从 JSON 获取某些值 具体来说 我想列出服务 测试00000 and FAKE only 当我运行下面的脚本时 我得到 TEST00000 FAKE Enabled True Pr
  • 从所有通讯组中删除所有前雇员

    因此 今天我被分配的任务是从所有 DL 中删除域中的所有前员工 他们在 AD 中拥有自己的文件夹 有没有什么方法可以快速做到这一点 或者至少比单独检查每个并转到 gt 的成员删除所有更快 Thanks 编辑以添加更多信息 有 822 个用户
  • 从 Windows 批处理文件中检测 ANSI 兼容控制台?

    Windows 10 控制台主机 conhost exe has 对 ANSI 转义序列的本机支持 https msdn microsoft com en us library windows desktop mt638032 aspx 旧
  • Windows 批处理文件:如何启用命令的内联回显

    如果在 Windows 批处理文件中默认禁用 echo 是否有办法为特定命令 内联 启用它 我知道可以回显特定命令disabled通过在命令前添加 但是有没有办法做相反的事情呢 例如 假设有一个像这样的批处理文件 echo off cmd1
  • 如何创建自定义 Powershell 运算符?

    是否可以在 Powershell 中创建自定义运算符 而且 我该怎么做呢 我搜索过谷歌 但没有任何结果 我特指一个中缀运算符 示例列表 包含 元素 我已经创建了 cmdlet 使用 Powershell 和 C 模块等 所以我只需要大概的内
  • 如何在批处理文件中测试当前驱动器号?

    我正在尝试编写一个批处理文件 该文件获取运行批处理文件的驱动器号 并使用它的 IF 语句 例如如果字母是M 则会跳转到标签 mSection 这可能吗 您可以使用 d0 来获取驱动器号 像这样的东西 IF d0 M CALL mSectio
  • Conda 无法在 Powershell 中激活

    我已经在我的 Windows 10 笔记本电脑上安装了 anaconda 我正在尝试激活名为的Python环境pyenv 首先 我检查conda env list在我的笔记本电脑中 这是 powershell 上的输出 PS C Users
  • Powershell“特殊”开关参数

    我有下面的powershell功能 Function Test Param Parameter string Text default text Write Host Text Text 我希望能够像下面这样调用这个函数 测试 文本 应该在
  • SNMP 响应被 PowerShell 破坏?

    考虑以下 PowerShell 代码 SNMP New Object COMObject OLEPrn OLESNMP SNMP Open 10 178 230 105 public 2 3000 MACAddress SNMP Get 1
  • 如何清除整个终端(PowerShell)

    我有一个问题 在powershell中使用clear或cls命令仅清除终端的可见部分 我想知道如何清除整个终端 顺便说一句 我使用 VSCode tl dr 问题是关于清零的both屏幕和回滚缓冲区 in the 综合终端 of 视觉工作室
  • Powershell 设置盖子关闭操作

    我想自动设置 Windows 7 在我的工作笔记本电脑上合上盖子时所执行的操作 因为每次登录时都会通过 GPO 重置该操作 我知道我可以在批处理脚本中使用 powercfg 命令来实现此目的 powercfg setacvalueindex
  • Try Catch 在 Powershell 脚本中不起作用

    我似乎无法让这个 try catch 工作 我确信这很简单 但此刻我的大脑太煎熬了 请帮忙 param String RemoteServicesVMs VmThatThrowsError function getWinServiceSta
  • Jenkins 执行 PowerShell 脚本

    我正在尝试从 Jenkins 运行 PowerShell 脚本 但它似乎完全忽略了执行策略 可以通过直接执行 powershell exe 或使用PowerShell插件 https wiki jenkins ci org display

随机推荐

  • 将对象的 ArrayList 传递给新的 Activity

    我有一个对象的 ArrayList IEArrayList
  • 即使没有任何更改,“转换为最新的 Swift 语法”也会破坏构建

    我的项目是用 Objective C 编写的 只有一个 swift 中的 tableviewcontroller 我今天下载了 Xcode beta 它提示我 转换为最新的 Swift 语法 当我按照步骤操作后 它显示没有任何变化 我也没有
  • Android-从前置摄像头拍照会旋转照片

    我正在 Android 中创建一个应用程序 用户只能在纵向模式下从前置摄像头拍照 我已经将相机视图固定为纵向 但拍照时它看起来是旋转的 最糟糕的是 不同手机的旋转方向不同 在一部手机中向右旋转 而在另一部手机中则向左旋转 这是我的代码片段
  • 在 Maven 中使用 maven-surefire-plugin 传递系统变量

    我想为 Maven 构建传递一些系统变量 如果我使用mvn clean install Dfirst variable value Dsecond variable second value一切安好 但这个配置在pom xml不起作用
  • 安排行动断言替代方案

    一般问题是单元测试是否有 AAA 的替代模式 如果是的话 看到一些例子并了解它们的优点和缺点将会非常有趣 作为 AAA 测试的最简单示例 在 C 中 为了简单起见 使用 var Arranging var annualSalary 1200
  • ListViewItem 覆盖默认样式中断网格视图

    我想知道是否有人遇到过这种情况 基本上我想做的是覆盖默认的列表视图项以自定义所选的背景 前景 我一切顺利 问题是 我注意到在我实现了网格视图的列表视图上 列被破坏了 我不确定会发生什么来打破这个 我覆盖默认样式的方法是使用混合通过编辑模板副
  • 使用 Formik 反应验证最大范围

    我正在尝试使用 React 和 Formik 进行验证 我想要实现最大数字仅为 2 最大范围应仅为 12 expiryMonth yup string required Select month max 2 Invalid month fo
  • ggplot2 facet_wrap 在每个方面绘制点、段、文本

    这与已发布的问题相同here https stackoverflow com questions 11889625 annotating text on individual facet in ggplot2 and here https
  • 调用always_inline‘_mm_mullo_epi32’时内联失败:目标特定选项不匹配

    我正在尝试使用 cmake 编译 C 程序 该程序使用 SIMD 内在函数 当我尝试编译它时 出现两个错误 usr lib gcc x86 64 linux gnu 5 include smmintrin h 326 1 错误 调用alwa
  • userprincipal.findbyidentity 发生操作错误

    好吧 我有责任将具有多个应用程序的网站迁移到另一台服务器 迁移进展顺利 所有应用程序都正常运行 然而 该新服务器的性能低于标准 完全是另一回事 我们决定再次迁移它 这次一切都运行良好 除了一个应用程序 它在第一台和第二台 IIS 服务器上运
  • Protractor 中的全局 beforeEach 和 afterEach

    在每个规范中我都有beforeEach and afterEach声明 是否可以以某种方式全局添加它以避免规范之间的代码重复 目的beforeEach and afterEach 函数是添加一个重复代码块 每次开始或完成执行每个规范时都需要
  • HTML5 Canvas:绘制完成时获取事件

    我正在将图像绘制到画布元素 然后我就有了依赖于这个过程来完成的代码 我的代码如下所示 var myContext myCanvasElement getContext 2d myImg new Image myImg onload func
  • 什么是位掩码?

    我对 C 编程相当陌生 并且遇到了位掩码 位掩码的一般概念和作用是什么 非常感谢例子 掩码定义要保留哪些位以及要清除哪些位 屏蔽是将屏蔽应用于值的行为 这是通过执行以下操作来完成的 按位与运算以提取值中的位子集 按位或运算以设置值中的位子集
  • 大数据请求体为空

    我在 post 方法的正文中发送大量文本 我使用 Postman 来测试这一点 但是它工作正常 我可以像这样读取请求正文 String text request body asText 但是当我尝试在正文中发送大量数据时 我得到的文本为空
  • Websphere 7集群部署

    我们有一个 J2EE 应用程序作为 EAR 文件 部署在 WAS 7 中 为了使应用程序可用性尽可能高 需要部署在 3 个集群中 我们有一个 Quartz Scheduler 类 其工作是每天凌晨 2 00 将数据从一个数据库上传到另一个数
  • MobX-State-Tree 流程中的类型化 Yield 表达式

    在 MobX state tree MST 中执行异步操作的推荐方法是使用flow https mobx state tree js org concepts async actions 它接受一个生成器函数作为第一个参数 其中每个承诺都应
  • 在 Docker 容器接口上应用 NetEM WAN 延迟

    我想对 docker 容器的出口流量应用 NetEm 延迟 通常 我运行 sbin tc qdisc add dev INTERFACE root netem delay DELAY ms 问题是我不知道容器连接到的接口 例如 我正在运行以
  • 本地化 JavaAnpr 以获取本地车牌

    我正在与JavaAnpr http javaanpr sourceforge net 自动识别车牌 虽然它适用于欧洲车牌 但不适用于我的国家 例如 如何编辑资源文件和语法 XML 以支持其他国家 地区 michel layyous 这是作者
  • 从二元高斯分布生成均值

    我正在阅读统计学习要素ESLII http www stat stanford edu tibs ElemStatLearn 在第二章中 他们用高斯混合数据集来说明一些学习算法 为了生成该数据集 他们首先从二元高斯分布 N 1 0 I 生成
  • 如何在 Windows PowerShell 中使用 .bat 文件更改当前目录?

    我正在学习 Windows PowerShell 并且正在努力完成非常基本的任务 如何创建 bat 文件来更改当前目录 简单的 bat 文件cd mydir里面用得很好cmd exe 但它在 PowerShell 中不起作用 PS C Us