@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
您是否正在寻找这样的东西,它只保留
%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