簡體   English   中英

如何在 Windows 命令行上刪除字符串中的前綴?

[英]How to remove prefixes in strings on Windows command line?

假設我想回顯 %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

如何刪除這些前綴?

您可以使用字符串替換批次的 function

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM