如何解决如何在Windows命令行上删除字符串中的前缀?
| 假设我想回应%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
如何删除这些前缀?
解决方法
您可以使用批处理的字符串替换功能
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
, 将其放在批处理文件中并运行,它应该可以完成工作。
@echo off
setlocal ENABLEDELAYEDEXPANSION
cd %programfiles%
for /r . %%i in (*.exe) do (
set pth=%%~fi
set val=!pth:%cd%\\=!
echo !val!
)
, 该答案基于jebs
这是如果您的批处理文件与您正在使用的驱动器不在同一个驱动器上,则需要采用不同的方法。
该代码包含注释。
@echo off
::
rem Based of the answer: https://stackoverflow.com/a/6335341/8262102
title Removes prefix from directories example...
set \"dirBase=C:\\Program Files\\Common Files\"
cd /d %dirBase% &rem changes to the directory.
setlocal DisableDelayedExpansion
for /r . %%A in (*.exe) do (
set \"progPath=%%~A\"
setlocal EnableDelayedExpansion
set \"progPath=!progPath:%dirBase%=!\"
echo .!progPath!
endlocal
)
echo/ & pause & cls
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。