gpt4 book ai didi

shell - 用于确定循环中相对路径的批处理脚本

转载 作者:行者123 更新时间:2023-12-02 08:37:23 25 4
gpt4 key购买 nike

我想在 Windows 7 中实现一个批处理脚本,它遍历文件夹中的所有文件并删除文件夹前缀,例如文件夹 = "C:\A\B\"和文件 = "C:\A\B\C\D.E"应该输出 "C\D.E"。我当前的代码如下所示:

setlocal ENABLEDELAYEDEXPANSION
SET DIRECTORY=C:\DEV\SVN\QA\
for /R %DIRECTORY% %%f in (*.*) do (
REM GET RELATIVE PATH
echo File=%%f
echo Path=%TARGET_PATH_FOR_SOURCE%
set result=%f:!TARGET_PATH_FOR_SOURCE!=%

echo Result=!result!
)

我得到以下结果:

File=C:\DEV\SVN\QA\1.0\A\B\C.txt
Path=C:\DEV\SVN\QA\1.0
Result=C:\DEV\SVN\QA\1.0= <<< Expected result: "A\B\C.txt"

我找到了这个 here 并在循环中尝试了这个但没有成功。你能帮帮我吗?

谢谢!

最佳答案

这应该有效。

有必要将 FOR 循环参数复制到变量,因为替换操作仅适用于变量。

@echo off
setlocal EnableDelayedExpansion
SET DIRECTORY==C:\DEV\SVN\QA
set TARGET_PATH_FOR_SOURCE==C:\DEV\SVN\QA\1.0
echo Path=%TARGET_PATH_FOR_SOURCE%
for /R %DIRECTORY% %%x in (*.*) do (
REM GET RELATIVE PATH
set "file=%%x"
set result=!file:%TARGET_PATH_FOR_SOURCE%=!
echo Result=!result!
)

关于shell - 用于确定循环中相对路径的批处理脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19950842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com