Я хочу найти файлы с .log расширение рекурсивно в каталоге. Я пытаюсь сделать команду ниже в командном файле.Как искать файлы с помощью командного файла и получить относительный путь к файлу не полный путь?
for /R %%A in (*.log) do echo %%A >> All_logs.txt
Я попытался это также:
for /R %%A in (*.log) do echo %%~nxA >> All_logs.txt
Но я либо полный путь, как это:
D:\Folder1\sub_folder1\bootmicro.log
D:\Folder1\sub_folder2\debug.log
или
bootmicro.log
debug.log
соответственно.
Поскольку я бегу пакетный файл в пути D: \ Folder1, я хочу найти результат быть похожим:
sub_folder1\bootmicro.log
sub_folder2\debug.log
Кроме того, в том же пакетный файл, я хочу создать папки с помощью результирующие имена файлов, как показано ниже:
sub_folder1_bootmicro_log_Analysis
sub_folder2_debug_log_Analysis
или
sub_folder1_bootmicro.log_Analysis
sub_folder2_debug.log_Analysis
Как я могу это сделать?
Хорошая идея с использованием 'xcopy', чтобы получить относительные пути; Я думал об использовании 'forfiles', который способен возвращать относительные пути (' @ relpath'), но всегда есть раздражающие кавычки вокруг вывода; поэтому было бы довольно сложно удалить их и построить новый относительный путь по просьбе ... – aschipfl
@aschipfl, Не очень отличается. Протестировано из командной строки 'forfiles/m * .log/s/c" cmd/v/q/c для/f tokens^= 1 ^, *^delims^= \% a in (@relpath) установить x = \ "% b \" & echo md ^! x: \ = _ ^! "'. Идеальная действительная идея. Я склонен не использовать 'forfiles', если есть другая альтернатива, потому что мне не нравится запускать один экземпляр' cmd' для каждой команды. Просто мои плохие привычки. –
Ваши привычки не так уж плохи, @MCND ;-) – aschipfl