You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过批处理将特定符号转换为Unicode传入PowerShell

批处理转义特殊字符为Unicode以兼容PowerShell

核心思路

直接借助PowerShell的字符串处理能力完成特殊字符的Unicode转义,比纯批处理实现更可靠,无需手动处理复杂的字符编码逻辑。

实现代码

@echo off
setlocal enabledelayedexpansion

:: 替换为实际目标文件夹路径,也可通过命令行参数传入(如%1)
set "target_dir=blabla_-_blabla's_bla"

:: 调用PowerShell将非拉丁字母、下划线、连字符的字符转为Unicode编码格式
for /f "delims=" %%i in ('powershell -Command "$dir='%target_dir%'; $dir -creplace '[^a-zA-Z_\-]', { '`u{0:x4}' -f [char]::ConvertToUtf32($_.Value, 0) }"') do set "escaped_dir=%%i"

:: 将转义后的目录名传入你的目标PowerShell代码,以下为示例
powershell -Command "Write-Host '处理后的目录:%escaped_dir%'"

endlocal

代码说明

  • setlocal enabledelayedexpansion:开启延迟扩展,避免字符串中的特殊字符干扰批处理变量解析
  • PowerShell正则替换:[^a-zA-Z_\-]匹配所有非允许字符,通过脚本块将每个匹配字符转换为uXXXX格式的Unicode编码(比如撇号'会转为'u0027')
  • for /f:捕获PowerShell的输出结果,赋值给批处理变量escaped_dir,供后续调用PowerShell时使用

注意事项

  • 正则表达式中的连字符-需要转义为\-,否则会被当作字符范围的边界
  • 如果目标路径包含双引号,需要在批处理中对双引号做额外转义(比如替换为")
  • 若通过命令行参数传入文件夹路径,直接将target_dir设为%1即可

内容的提问来源于stack exchange,提问作者Aleksandr Podaruev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:59:53