5

Я хочу использовать командную строку Windows, чтобы перечислить файлы с путем.

Например:

~\folder1
  \1.jpg
  \2.jpg
~\folder2
  \01.jpg
  \02.jpg

Я хочу, чтобы вывод был похож на относительные пути, а не на полный путь:

.\folder1\1.jpg
.\foler1\2.jpg

Когда я использую DIR /S /B *.jpg > list.txt котором указан полный путь, например C:\download\folder\folder1\1.jpg , мне нужно только указать относительный путь, например .\folder1\1.jpg ...

Использование командной строки Linux для find ./ -iname *.jpg > list.txt дает ожидаемый результат, но мне нужно решение, которое будет работать так же с Windows.

1 ответ1

2

Использование командной строки Windows для вывода списка файлов в подкаталоге

Я хочу вывести:.\ Folder1\ 1.jpg,.\ Foler1\ 2.jpg ....

Я знаю, если мы используем dir /s /b * .jpg> list.txt, который получит что-то вроде C:\ download\ folder\ folder1\ 1.jpg, я не хочу этого, мне просто нужно.\ Folder1\ 1.jpg

Разъяснение переменных (ниже)

  • Если логика ниже:FOR %X IN ("folder1","Folder2") или SET Folders=("Folder1","Folder2","Folder3","Folder4") вы поместите свои "Folder1" , "Folder2" и так далее, с двойными кавычками и запятыми для каждого имени папки, которое вы хотите найти, и укажите список ./Foldername/file.jpg к файлу, к которому вы добавляете вывод echo'd.
  • Для примера копирования из командной строки вы захотите сделать CD /D C:\Path к родительскому каталогу, где подпапки, где .JPG существуют, поскольку эта логика неявна, если вы находитесь в родительском каталоге, чтобы найти эти дочерние подпапки и содержащиеся в них типы / расширения файлов.
  • Для других примеров вы просто подключите родительский каталог, который содержит все дочерние подпапки, где находится .JPG существуют в SET ParentDir= и все должно работать иначе, чем ожидалось.
  • Я предполагаю, что другие переменные, которые являются SET должны быть самоочевидными, так как они названы довольно близко к тому, что они означают, но дайте мне знать, если вам нужно дополнительное разъяснение в противном случае.

Пример копирования из командной строки

FOR %X IN ("folder1","Folder2") DO FOR /F "TOKENS=*" %F IN ('DIR /B /A-D ".\%~X\*.jpg"') DO ECHO .\%~X\%~F>>C:\Path\Log.txt

Пример копирования командной строки Set Variables

(Используйте ниже для установки имен ваших папок и расширений файлов для команды DIR . Также вставьте полный путь к родительскому каталогу, где находятся подпапки, которые вы хотите добавить в этом формате в текстовый файл.)

SET FileType=*.jpg
SET ParentDir=C:\Users\Name\Desktop
SET Folders=("Folder1","Folder2","Folder3","Folder4")
SET LogFile=C:\Path\LogFile.txt

CD /D "%ParentDir%"
FOR %X IN %Folders% DO FOR /F "TOKENS=*" %F IN ('DIR /B /A-D ".\%~X\%FileType%"') DO ECHO .\%~X\%~F>>"%LogFile%"

Пример пакетного скрипта с настройкой переменных

@ECHO ON
SET FileType=*.jpg
SET ParentDir=C:\Users\Name\Desktop
SET Folders=("Folder1","Folder2","Folder3","Folder4")
SET LogFile=C:\Path\LogFile.txt

CD /D "%ParentDir%"
FOR %%X IN %Folders% DO FOR /F "TOKENS=*" %%F IN (

    'DIR /B /A-D ".\%%~X\%FileType%"'

) DO ECHO .\%%~X\%%~F>>"%LogFile%"
GOTO EOF

Дальнейшее чтение и ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .