string - 如何在 Windows 命令行上删除字符串中的前缀?

标签 string batch-file

假设我想回显 %programfiles% 文件夹中的每个可执行文件

cd %programfiles%
for /r . %i in (*.exe) do echo "%~i"

但是它产生了

c:\program files\program1\program1.exe
c:\program files\program2\program2.exe

我想要

program1\program1.exe
program2\program2.exe

如何删除这些前缀?

最佳答案

可以使用batch的字符串替换功能

pushd %programfiles%
set "prefix=%programfiles%"
setlocal DisableDelayedExpansion
for /r . %i in (*.exe) do (
  set "progPath=%~i"
  setlocal EnableDelayedExpansion
  set "progPath=!progPath:%prefix%=!"
  echo !progPath!
  endlocal
)
popd

关于string - 如何在 Windows 命令行上删除字符串中的前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6335007/

相关文章:

Azure DevOps Pipeline CMD 任务 [错误]访问被拒绝

Windows批处理循环遍历文件夹中的文件并解析文件名

batch-file - 检查文件是否早于 2 分钟

c++ - 当我声明字符串数组时,C++ 如何计算偏移地址

javascript - 用 '+' 替换字符串中的所有空格

python - 如何将 "5cm"之类的字符串转换为整数

python - 使用 decode() 与正则表达式对这个字符串进行转义

c# - 计算句子中单词数的控制台应用程序。 (C#)

windows - 如何将转义双引号传递给批处理文件

java - Windows 批处理文件 popd 无法按预期工作