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
..のような相対パスをリストするためだけに必要です。
find ./ -iname *.jpg > list.txt
のLinuxコマンドラインを使用すると、期待どおりの結果が得られますが、Windowsでこのように機能するソリューションが必要です。
Windowsコマンドラインを使用してサブディレクトリを持つファイルを一覧表示する
出力したい:。\ folder1\1.jpg、。\ foler1\2.jpg..。
C:\ download\folder\folder1\1.jpgのようなdir/s/b * .jpg> list.txtを使用するかどうかはわかっていますが、それは必要ありません。必要なのは。\ folder1 \だけです。 1.jpg
変数の明確化(以下)
FOR %X IN ("folder1","Folder2")
またはSET Folders=("Folder1","Folder2","Folder3","Folder4")
の場合、"Folder1"
、"Folder2"
などを、各フォルダーに二重引用符とコンマを付けて配置します。探したい名前と、エコー出力を追加するファイルに./Foldername/file.jpg
をリストします。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
(以下を使用して、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
また、相対パスのみを一覧表示する関数も探していました。
ここにいくつかの代替ソリューションがあります...
(%cd%を開始パスに置き換えてください(例:C:\ download\folder))
特定の開始パスへの相対パスを持つすべてのサブディレクトリとファイルを一覧表示します:
@echo off
SET "StartPath=%cd%"
SetLocal EnableDelayedExpansion
FOR /f "tokens=*" %%f in ('dir /B /ON /S "!StartPath!"') DO (
set "SubDirsAndFiles=%%f"
set "SubDirsAndFiles=!SubDirsAndFiles:%StartPath%=!"
ECHO !SubDirsAndFiles!
)
選択したファイルタイプを特定の開始パスへの相対パスのみで一覧表示します(例:*。jpg、*。png):
@echo off
SET "StartPath=%cd%"
SetLocal EnableDelayedExpansion
FOR /f "tokens=*" %%f in ('dir /B /ON /S "!StartPath!\*.jpg" "!StartPath!\*.png"') DO (
set "SubDirsAndFiles=%%f"
set "SubDirsAndFiles=!SubDirsAndFiles:%StartPath%=!"
ECHO !SubDirsAndFiles!
)
特定の開始パスへの相対パスを持つすべてのサブディレクトリとファイルを一覧表示します(パスは\で終わります):
@echo off
SET "StartPath=%cd%"
SetLocal EnableDelayedExpansion
FOR /f "tokens=*" %%f in ('dir /B /ON /S "!StartPath!"') DO (
set "SubDirsAndFiles=%%f"
set "SubDirsAndFiles=!SubDirsAndFiles:%StartPath%=!"
IF EXIST "!StartPath!\!SubDirsAndFiles!\" (
REM Echo This is a folder...
ECHO !SubDirsAndFiles!\
) ELSE (
REM Echo This is a file...
ECHO !SubDirsAndFiles!
)
)