批量删除指定名称的路径,列出文件及其路径

问题描述 投票:0回答:1
@echo off
del 0List.txt 2 > nul
for /F "delims=" %%I in ('dir "D:\MyFolder\Ready\*.txt" /A-D /B /S 2^>nul') do echo %%~fI>>0List.txt

使用此代码,我在文件夹 (Ready) 中列出了 TXT 文件及其子文件夹。它使用文件列表创建 txt。只是,我想最终摆脱D;\直到Ready。所以

D:\MyFolder\Ready\file1.txt 
D:\MyFolder\Ready\file2.txt
D:\MyFolder\Ready\My Sub Folder\file434.txt

应该在我创建的列表中进行修剪

Ready\file1.txt 
Ready\file2.txt
Ready\My Sub Folder\file434.txt

我查看了一些问题,但无法将其应用到上面的代码中,如果有人可以告诉我在哪里添加以删除路径的第一部分,我将不胜感激。

解决方案:(基于下面compo的答案)

for /F "tokens=2,* delims=\" %%i in ('dir "D:\MyFolder\Ready\*.txt" /A-D /B /S 2^>nul') do echo %%j>>0ListDefFiles.txt
list file batch-file split path
1个回答
0
投票

您是否正在寻找这样的东西,它只保留

%BaseDirectory%
的最后一片叶子:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Set "BaseDirectory=D:\MyFolder\Ready"
Set "SearchMask=*.txt"

For /F "EOL=? Delims=" %%G In ('PushD "%BaseDirectory%\.." 2^>NUL ^&^& (CD ^& PopD^)') Do For /F "EOL=? Delims=" %%H In ('Dir "%BaseDirectory%\%SearchMask%" /A:-D /B /S 2^>NUL') Do Set "FullPath=%%H" & SetLocal EnableDelayedExpansion & For %%I In ("!FullPath:*%%~G\=!") Do EndLocal & Echo %%~I

Pause

EndLocal
© www.soinside.com 2019 - 2024. All rights reserved.