powershell目录带空格_powershell - 如何在命令行的路径中运行带有空格的powershell脚本? - SO中文参考 - www.soinside.com...

-File Parameter

如果要从命令行运行powershell.exe -File,则必须始终在doubleqoutes(")中设置带空格的路径。单引号(')仅由powershell识别。但是,当命令行调用powershell.exe(因此处理文件参数)时,您必须使用"。

powershell.exe -File "C:\Users\test\Documents\Test Space\test.ps1" -ExecutionPolicy Bypass

-Command Parameter

如果你使用-Command参数而不是-File,那么-Command内容由PowerShell处理,因此你可以 - 并且在这种情况下必须 - 在'中使用"。

powershell.exe -Command "& 'C:\Users\test\Documents\Test Space\test.ps1'" -ExecutionPolicy Bypass

双引号由命令行处理,& 'C:\Users\test\Documents\Test Space\test.ps1'是由PowerShell实际处理的命令。

解决方案1显然更简单。

请注意,如果您未指定任何参数,则-Command也是使用的默认参数。

powershell.exe "& 'C:\Users\test\Documents\Test Space\test.ps1'" -ExecutionPolicy Bypass

这也行得通。

-EncodedCommand Parameter

您可以将命令编码为Base64。这解决了许多“引用”问题,有时(但不是在你的情况下)是唯一可行的方法。

首先,您必须创建编码命令

$Command = "& 'C:\Users\test\Documents\Test Space\test.ps1'"

[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($Command))

然后你可以像这样使用-EncodedCommand参数

powershell.exe -EncodedCommand JgAgACcAQwA6AFwAVQBzAGUAcgBzAFwAdABlAHMAdABcAEQAbwBjAHUAbQBlAG4AdABzAFwAVABlAHMAdAAgAFMAcABhAGMAZQBcAHQAZQBzAHQALgBwAHMAMQAnAA== -ExecutionPolicy Bypass

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Windows ,批处理脚本本身不支持正则表达式,但是我们可以借助其他命令或工具来实现类似的功能。以下是使用 Windows 自的 `findstr` 和 `powershell` 命令来实现将 `1.0.988` 替换为 `1-0-1-988` 的 bat 脚本示例: ```bat @echo off setlocal enabledelayedexpansion set "file=test.txt" set "tempfile=%file%.tmp" for /f "tokens=*" %%a in (%file%) do ( set "line=%%a" set "newline=!line!" echo !newline!| findstr /r "\<1\.0\.988\>" >nul if not errorlevel 1 ( set "newline=!newline:1.0.988=1-0-1-988!" ) echo !newline!>>%tempfile% ) move /y %tempfile% %file% ``` 这个脚本的具体思路是: 1. 使用 `set "file=test.txt"` 和 `set "tempfile=%file%.tmp"` 定义需要处理的文件和临时文件的名称。 2. 使用 `for /f "tokens=*" %%a in (%file%) do (...)` 循环遍历文件的每一行。 3. 使用 `set "line=%%a"` 将当前行的文本内容赋值给变量 `line`。 4. 使用 `set "newline=!line!"` 定义一个新的变量 `newline`,用于存储替换后的行,初始值为当前行的内容。 5. 使用 `echo !newline!| findstr /r "\<1\.0\.988\>" >nul` 命令来判断当前行是否包含 `1.0.988`,其 `/r "\<1\.0\.988\>"` 表示使用正则表达式检索 `1.0.988` 的完整单词(即不包含在其他单词的 `1.0.988`)。 6. 如果当前行包含 `1.0.988`,则使用 `set "newline=!newline:1.0.988=1-0-1-988!"` 命令将 `1.0.988` 替换为 `1-0-1-988`。 7. 使用 `echo !newline!>>%tempfile%` 将替换后的行写入临时文件。 8. 使用 `move /y %tempfile% %file%` 将临时文件重命名为原文件,完成替换操作。 这样就可以将文件的 `1.0.988` 替换为 `1-0-1-988`,且不替换空格。需要注意的是,这个脚本只能替换完整的 `1.0.988`,而不能替换其他形式的 `1.0.9-8-8` 等。如果需要处理更复杂的情况,可以考虑使用其他强大的文本处理工具或编程语言。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值