假设我想回显%programfiles%文件夹中的每个可执行文件
cd %programfiles%
for /r . %i in (*.exe) do echo "%~i"
Run Code Online (Sandbox Code Playgroud)
但它产生了
c:\program files\program1\program1.exe
c:\program files\program2\program2.exe
Run Code Online (Sandbox Code Playgroud)
而且我要
program1\program1.exe
program2\program2.exe
Run Code Online (Sandbox Code Playgroud)
如何删除这些前缀?
您可以使用批处理的字符串替换功能
cd %programfiles%
set "prefix=%programfiles%"
setlocal DisableDelayedExpansion
for /r . %i in (*.exe) do (
set "progPath=%~i"
setlocal EnableDelayedExpansion
set "progPath=!progPath:%prefix%=!"
echo !progPath!
endlocal
)
Run Code Online (Sandbox Code Playgroud)
把它放在一个批处理文件中并运行,它应该可以完成这项工作。
@echo off
setlocal ENABLEDELAYEDEXPANSION
cd %programfiles%
for /r . %%i in (*.exe) do (
set pth=%%~fi
set val=!pth:%cd%\=!
echo !val!
)
Run Code Online (Sandbox Code Playgroud)