Load file paths from a folder by extension (*.png, *.mp4, *.txt, etc.), then feed them into any ComfyUI node that accepts a path (image/video/audio/anything-from-path).
This repo is mainly for easy batch processing:
- Use it with your favorite loop/for/while node pack (pick items by index), or
- Use this repo’s simple loop node (
File Paths For Loop Start) to have ComfyUI run downstream nodes once per file (list batching).
- Clone into
ComfyUI/custom_nodes
cd path/to/ComfyUI/custom_nodes
git clone https://github.com/RockyHong/ComfyUI-FilePathsFromFolder.git- Restart ComfyUI
- Search nodes by name:
Load File Paths From Folder,Get File Path By Index,File Paths For Loop Start,File Paths For Loop Sync
- Download ZIP from GitHub
- Extract
- Copy folder
ComfyUI-FilePathsFromFolderintoComfyUI/custom_nodes/ - Restart ComfyUI
Use this when you already have an external loop/for/while node pack and you want to drive it with “files in a folder” (by extension).
LoadFilePathsFromFolder: scan folder → getfilepaths/filenames/countGetPathByIndex: choose one item → getfilepath/filename(UI:Get File Path By Index)
LoadFilePathsFromFolder(set folder path + extension)count→ your loop node “iterations” / “max” (names vary by pack)- Loop
index→GetPathByIndex.index LoadFilePathsFromFolder.filepaths+.filenames→GetPathByIndexGetPathByIndex.filepath→ your loader node (Load Image / Load Video / etc.)- Do your processing + save/export inside your external loop pack
Use this when you want the simplest setup: File Paths For Loop Start returns lists, and ComfyUI runs downstream nodes once per file via list batching.
File Paths For Loop Start: generates the per-file list outputs (current_filepath,current_index, etc.)File Paths For Loop End: loop terminator / completion signal
File Paths For Loop Start(set folder path + extension)current_filepath→ your loader node (e.g. Load Image)- Your processing nodes
- (Optional) outputs you want to guarantee run (e.g. save/write/export nodes) →
FilePathsEnsureExecution.passthrough_1…passthrough_5 current_index→File Paths For Loop End.current_index- (Optional)
FilePathsEnsureExecution.passthrough→File Paths For Loop End.passthrough(this “anchors” the route so it executes)
File Paths For Loop Start uses ComfyUI list batching (OUTPUT_IS_LIST): ComfyUI may run the workflow one node at a time for all files, rather than finishing file 0 completely before starting file 1.
- What you'll see: it may run like "load all → process all → save all", not "load → process → save" per file.
- When this is good: if you want to run many files with the same model/settings, batching can help keep the model "warm" and avoid offload/reload each file.
- Why memory can climb: more intermediate results may stay in RAM/VRAM until later nodes run.
- Solution for mid-batch cleanup: Use
File Paths For Loop Sync Trigger+File Paths For Loop Sync Resumeto run cleanup once between batch stages (see Batch Synchronization below). - Need true one-file-at-a-time? Use an external loop/for/while node pack that runs each file start→finish before moving on.
Some ComfyUI workflows can “skip” routes that don’t affect the final output the graph thinks it needs. If you have save/write/export nodes that you must run, use File Paths For Loop Ensure Execution as an anchor.
- Connect the nodes you want to guarantee run into
passthrough_1…passthrough_5 - Connect
passthroughoutput toFile Paths For Loop End.passthrough
Use this when you need to run something exactly once between two batched stages (e.g. LLM batch → clear VRAM once → T2I batch), without switching to an external per-file loop.
File Paths For Loop Sync Trigger: put this right after a batched output. It provides:anything: the original batch (passes through unchanged)trigger: a single (non-batched) value you can feed into any “run once” node
File Paths For Loop Sync Resume: a simple wait point. It:- Takes the batch on
anything(from Trigger) - Takes a completion signal on
wait_for(from your one-time node) - Outputs the same batch so downstream nodes continue as a batch
- Takes the batch on
How to wire it (in words): connect your batched data into Sync Trigger → connect Sync Trigger.anything into Sync Resume.anything → connect Sync Trigger.trigger into your one-time node → connect that one-time node’s output into Sync Resume.wait_for → continue the workflow from Sync Resume.anything.
What you can run once: clear RAM/VRAM, save/checkpoint, switch models, send notifications, write logs, etc.
MIT — see LICENSE.
.jpg)
.jpg)

