Batch file 批处理:获取文件的相对文件路径

Batch file 批处理:获取文件的相对文件路径,batch-file,Batch File,我需要使用bat获取文件的相对文件路径 文件夹结构 file.bat - folder1 -- subfolder1 ----- abc.image ----- def.image -- subfolder2 ---- more.image - folder2 -- subfolder1 ---- alsoimages.image -- subfolder2 对于abc.image,我想获取文件夹的名称(此处为folder1)和文件夹+子文件夹的组合(此处为folder1/子文件夹1) 我看了

我需要使用bat获取文件的相对文件路径

文件夹结构

file.bat
- folder1
-- subfolder1
----- abc.image
----- def.image
-- subfolder2
---- more.image
- folder2
-- subfolder1
---- alsoimages.image
-- subfolder2
对于abc.image,我想获取文件夹的名称(此处为folder1)和文件夹+子文件夹的组合(此处为folder1/子文件夹1)

我看了这篇文章: 但是我不能让它为我工作。输出总是给我太多的层次结构

我最终想做的是:

set "prefix=td"
set "file=list_of_images.xml"

echo ^<?xml version="1.0"  encoding="UTF-8" standalone="yes"?^> > %file%
echo ^<files^> >>  %file%

    for /r %%x in (*.image) do ( 

        echo ^<file folder="(here e.g. folder1)" subfolder="(here e.g. folder1/subfolder1)" id="%prefix%%%~nx" type="image" /^> >>  %file%
    )

echo  ^</files^> >>  %file%
设置“prefix=td”
设置“file=list\u of_images.xml”
echo^>%文件%
echo^>>%文件%
对于(*.image)中的/r%%x,请执行(
echo^>>%文件%
)
echo^>>%文件%

谢谢你的帮助和提示

下一个代码片段可能会有所帮助:

  for /r %%x in (*.image) do (
      for /F "tokens=1* delims=\" %%G in ("%%~px") do (

        echo "%%~G" "%%~H" "%prefix%%%~nx"

      ) 
  )
正在拆分到多个子文件夹:

  for /r %%x in (*.image) do (
      for /F "tokens=1,2* delims=\" %%G in ("%%~px") do (

        echo "%%~G" "%%~H" %%~I "%prefix%%%~nx"

      ) 
  )
以此类推……

对于/f“tokens=1,*delims=\”%%a,在
xcopy“\*.image”“%temp%”/s/e/l
“)如果不是“%%b”==”回显(%%b
获取具有相对路径的文件列表的最简单方法是使用
xcopy
命令生成文件列表(
/l

您还可以使用
subst
命令创建一个“虚拟”驱动器盘符,驱动器的根指向所需的起始文件夹,然后使用相同的代码引用此驱动器,现在将无法检索上部文件夹结构

file.bat
- folder1
-- subfolder1
----- abc.image
----- def.image
-- subfolder2
---- more.image
- folder2
-- subfolder1
---- alsoimages.image
-- subfolder2
编辑以适应评论

for/f“tokens=2-4 delims=\”%%a in('
xcopy“\*.image”“%temp%”/s/e/l
“)do echo文件夹=%%a子文件夹=%%b文件=%%c
xcopy
命令的输出格式为

.\folder\subfolder\file

因此,使用反斜杠作为分隔符,我们跳过第一个标记,检索第二个(文件夹)、第三个(子文件夹)和第四个(文件)

好的,这一个非常有效。但是如何从folder/folder1/abc.image中获取子字符串,从而获得“folder1”和“folder1/subfolder1”?