Selecting a batch of files in File Explorer, copying them into a list with one name per line, and then letting the name and the suffix each take a column sounds like a three-step job. I ran a 20-line list through it and the page kept only 18 rows; the copied text still landed as 18 rows × 1 column when I pasted it into Excel; and after one manual Data → Text to Columns run, the cell that had held 1e5 held 100000. What follows is what I measured on every link of that chain, and the subject is column structure and separator code points.
The split does exactly one thing: every line breaks at its last dot, the left side goes into the left column, the right side into the right column, and a single separator joins the two. The tool I used is Filename Suffix Split, which gives both the table on the page and a block of plain text you can copy straight away. A double suffix such as archive.tar.gz still breaks only once, at the last dot, producing archive.tar and gz.
20 lines in, 18 rows out, and the dropped rows leave no gap
My sample list contains 1 blank row and 1 row that holds only spaces. Line 93 of the template reads if (!trimmed) return;, and both kinds of row are thrown away before the split: they reach neither the table nor the clipboard, and nothing is left in their place so that row numbers would still line up. So the row-count difference equals the number of blank rows exactly: 20 lines in, 18 rows out, and the page counts 18 <tr> elements and 54 <td> elements.
The order, though, does not move. The template contains .sort( and .reverse( 0 times each, and when I ran a shuffled 500-line list and compared it row by row the orderDiff came out 0. But as soon as the input holds blank rows the output can no longer be aligned line by line with the original list, and the drift starts at the row that was dropped.
Fig. 1: 20 lines in, 18 rows out - the missing 2 rows are a blank row and a space-only row
One line becomes two columns
| Input row | Left column | Right column |
|---|---|---|
report.pdf | report | |
archive.tar.gz | archive.tar | gz |
LICENSE | LICENSE | empty string |
my report .pdf | my report , the trailing space is still there | |
C:\a b\photo.jpg | C:\a b\photo | jpg |
| (blank row) | the whole line is dropped, no placeholder is left | |
The row that carries a path simply brings the whole left segment into the column, drive letter, backslash and space all intact; how to pull a file name out of a path is already covered in File Name Only, No Path, so I will not repeat it here.
Measured, only two code points ever act as separators
The clipboard output for the 20-line sample is 459 code points and 467 UTF-8 bytes, and the 8 extra bytes come from 4 Chinese names. Counted character by character: 18 commas, 17 LF, 0 Tab, 0 CR, 0 pipes, and no newline appended at the end. The comma is U+002C and the newline is U+000A; there is no third separator to choose between.
Pasted into Excel: the comma never splits anything
A COM measurement against the Microsoft Excel 12.0 on this machine: pasting those 18 rows straight in gives 18 rows × 1 column, every cell typed as String, the comma just one more character inside the cell, backslashes and spaces staying exactly as they were. Turning that into two columns meant running Data → Text to Columns → comma myself, and that step is not something the tool hands over; after Text to Columns the sheet held 18 rows × 2 columns.
A second list of 15 rows exposes the trap better: pasted directly it gives 15 rows × 1 column, and after a manual Text to Columns run it becomes 15 rows × 3 columns. The extra column is not a defect, the name itself already contains a comma - a,b.txt outputs 3 segments, so Excel spreads it over 3 columns.
1e5becomes 100000, because scientific notation is read as one number.007becomes 7, the leading zeros disappear.1.0becomes 1, the trailing zero disappears.12.3is split into 12 and 3, two separate cells.2024-01-01becomes the date serial 45292, and3-4becomes 46085.20240101, a digit-only left segment with no suffix, is read as a number instead of as text.
Fig. 2: column count and cell types for the 15 rows of text inside Excel
Presetting the text format does not stop it either
I expected that fixing the format first would protect the values, so I preset both receiving columns as the text format "@" and then ran Text to Columns. Measured, 45292, 12, 7, 1, 46085, 20240101 and 0.1 all came back as Double, NumberFormat was rewritten back to m/d/yyyy, and out of 15 cells only 1e5 stayed String. The other route is to swap the separator to U+0009 and paste directly: that splits into 15 rows × 3 columns on its own, and here 1e5 and 007 do stay String, but 2024-01-01 still turns into 45292.
The right segment of a suffix-free row is an empty string
The stats bar for the 20-line sample reads total files 18, with suffix 14, without suffix 4. A suffix-free row copies out as LICENSE,, ending on the comma with an empty string on the right; after Text to Columns that cell is null in Excel, not 0 and not a placeholder. The — (U+2014) that looks like a placeholder on the page belongs only to the display of the third column, it never enters the clipboard, and pasting will not carry it out.
How the three newline styles split lines
LF and CRLF both split lines correctly: a.txt\r\nb.txt\r\nc.txt\r\n yields 3 rows, and whether a trailing newline exists changes nothing about the row count. Old Mac text that uses CR alone does not split at all: a.txt\rb.txt\rc.txt collapses into 1 row, and both U+000D characters fall into the left segment and get copied out with it.
The comparison column on the page is rebuilt, not echoed
The third column is not my original input line: line 108 of the template rebuilds it with name + '.' + ext. Across the 20-line sample, 5 rows do not equal the original text once they are rebuilt. The clearest case is my report .pdf: the space before the dot stays in the left segment, the browser keeps it in textContent while innerText folds it away - invisible in the table, still there in Excel.
Does a longer list get truncated
In headless Chrome, 500 / 2000 / 20000 rows cost 9 / 21 / 193.9 ms and produced <td> counts of 1500 / 6000 / 60000; on the 20000-row run the tbody innerHTML measured 1803495 characters with 100031 document nodes. On the Node side 50000 rows took 245.12 ms and the clipboard held 717460 bytes. All four sizes reported truncated=false, and none of them was cut.
The byte arithmetic closes as well: an input of 2000 rows × 255 characters is 511999 bytes, and the output is the same 511999 bytes, identical byte for byte - the dot is replaced by the comma one for one, so the length cannot change.
Frequently asked questions
Q: Why does pasting into Excel give only one column?
The exit is a comma, and Excel does not break pasted plain text on commas. Pasting directly measured 18 rows × 1 column, so running Text to Columns is on me; the tab-separated route is the one that splits by itself.
Q: Why does the output have fewer rows than my list?
Blank rows and space-only rows are dropped and never replaced, so 20 input lines map to 18 output rows. To keep the row numbers aligned you have to remove those two kinds of row beforehand, or fill them with real content.
Q: Can it export a file instead of copying?
No. Inside the template download, Blob and createObjectURL each score 0 hits, and UU.copy goes through navigator.clipboard.writeText to emit a single text/plain format, so the question of whether copy and download agree byte for byte has no second artifact to compare against.