Windows can create and use path lengths of up to 259 characters (excluding the terminating NULL character)
Recuva aborts with a warning error for anything more than 257 characters when restoring (with folder structure) to the root of a drive,
and obviously aborts upon a shorter length if restoring to folder other than root.
W:\Drive_F_Long_Path_Bats>MakeLong
Script W:\Drive_F_Long_Path_Bats\MakeLong.bat revised 13/07/2013 09:56
13/07/2013 09:57 18 AA--12-A.INI
13/07/2013 09:57 18 BB--24---------ZKZ-B.INI
13/07/2013 09:57 18 CC--25---------YLY--C.INI
13/07/2013 09:57 18 DD--26---------XMX---D.INI
13/07/2013 09:57 18 EE--27---------WNW----E.INI
13/07/2013 09:57 18 FF--28---------VPV-----F.INI
13/07/2013 09:57 18 GG--29---------UQU------G.INI
13/07/2013 09:57 18 XX--12-X.INI
W:\##
└───XYZ
└───(1[---------------------FIFTY----------------------]1
└───2[---------------------FIFTY----------------------]2
└───3[---------------------FIFTY----------------------]3
└───4[---------------------FIFTY----------------------]4)
└───#-5-#
AA--12-A.INI
BB--24---------ZKZ-B.INI
CC--25---------YLY--C.INI
DD--26---------XMX---D.INI
EE--27---------WNW----E.INI
FF--28---------VPV-----F.INI
GG--29---------UQU------G.INI
XX--12-X.INI
Script W:\Drive_F_Long_Path_Bats\Header.Bat revised 12/07/2013 21:58
Delete contents of "\##\XYZ\*" ? D(elete) / N(o) :- n
…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…S.;…’…M :- S(ort)=248 M(ax)=259
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\BB–24---------ZKZ-B.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\CC–25---------YLY–C.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\DD–26---------XMX—D.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\EE–27---------WNW----E.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\FF–28---------VPV-----F.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\GG–29---------UQU------G.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\XX–12-X.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\AA–12-A.INIScript W:\Drive_F_Long_Path_Bats\Header.Bat revised 12/07/2013 21:58
…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘.S…;…’…M :- S(ort)=247 M(ax)=259
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\GG–29---------UQU------G.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\FF–28---------VPV-----F.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\EE–27---------WNW----E.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\DD–26---------XMX—D.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\CC–25---------YLY–C.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\BB–24---------ZKZ-B.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\XX–12-X.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\AA–12-A.INIDelete contents of “##\XYZ*” ? D(elete) / N(o) :- n
“n” Retaining “##\XYZ*”
W:\Drive_F_Long_Path_Bats>
==================================================================================================
RECUVA TEST ON "Not Deleted" FILES :-
Launched Recuva v1.47.498 (64bit) with "Wizard" bypassed.
Options / Actions :- Ticked the boxes
Scan for non-deleted ...
Restore folderstructure
all other action boxes unticked.
Selected drive W:\ and clicked Scan
Clicked on the "Path" header and all 8 of the ##\XYZ\* folders appeared near the top of the list
I right clicked one of them and selected "Highlight Folder" and chose "W:\##\XYZ
I right clicked the group and chose "Check Highlighted"
I clicked "Recover" and chose E: and clicked OK and was told "Maximum path length exceeded"
SOLUTION :-
==================================================================================================
I launch SysExporter v1.62 and chose Title "Piriform Recover" Type "ListView"
(If it does not appear you may need to tick "ListView" at the top of the list within Menu "Filter")
This displayed what I could see in the Recuva window.
Chose Menu "Items", Chose Columns", moved "Filename" below "Path", and unticked all other boxes, and clicked OK.
Chose Menu "Items", chose "Copy selected items (Tab delimitted)%
Launched Notepad and used Ctrl-V to paste the result which was
Path Filename W:\##\XYZ\(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)\#-5-#\ AA--12-A.INI W:\##\XYZ\(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)\#-5-#\ BB--24---------ZKZ-B.INI W:\##\XYZ\(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)\#-5-#\ CC--25---------YLY--C.INI W:\##\XYZ\(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)\#-5-#\ DD--26---------XMX---D.INI W:\##\XYZ\(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)\#-5-#\ EE--27---------WNW----E.INI W:\##\XYZ\(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)\#-5-#\ FF--28---------VPV-----F.INI W:\##\XYZ\(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)\#-5-#\ GG--29---------UQU------G.INI W:\##\XYZ\(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)\#-5-#\ XX--12-X.INI and saved this as "W:\Long-Paths\Report.txt" The FIlenames are preceeded by an ugly TAB that are dealt with by Header.Bat.Launched “W:\Long-Paths\Header.Bat” which produced Report.LST :-
…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘…;…’…;…‘.S…;…’…M :- S(ort)=247 M(ax)=259
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\GG–29---------UQU------G.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\FF–28---------VPV-----F.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\EE–27---------WNW----E.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\DD–26---------XMX—D.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\CC–25---------YLY–C.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\BB–24---------ZKZ-B.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\XX–12-X.INI
W:##\XYZ(1[---------------------FIFTY----------------------]1\2[---------------------FIFTY----------------------]2\3[---------------------FIFTY----------------------]3\4[---------------------FIFTY----------------------]4)#-5-#\AA–12-A.INI
PathFilename
==================================================================================================
File GG*.INI has a total path length of 259 characters
I selected that file which removed highlights from the other files,
and I unticked that file and tried again and was told "Maximum path length exceeded"
I unticked FF*.ini and tried again and totally recovered 6 files
I closed Recuva and SysExporter
One instance of Windows Explorer shows all 8 files on drive W:\
and another instance shows only 6 files on E:\
I selected FF*.ini and GG*.ini and drag-drop copied to the some folder which Recuva aborted on.
HashMyFiles (from Nirsoft) confirms that the files on W:\* have the same hash values as E:\*
I renamed E:\##\* as E:\#0\*
I deleted E:\##\*
RECUVA TEST ON "Excellent" (i.e. DELETED) FILES :-
Selected drive W:\ and clicked Scan
Clicked on the "Path" header and all 8 of the ##\XYZ\* folders appeared near the top of the list
I right clicked one of them and selected "Highlight Folder" and chose "W:\##\XYZ
I right clicked the group and chose "Check Highlighted"
I clicked "Recover" and chose E: and clicked OK and was told "Maximum path length exceeded"
Unticked GG* and clicked Recover and again "Maximum path length exceeded"
Unticked FF* and clicked Recover and totally recovered 6 files.
Recuva Options / Actions and unchecked "Restore folder structure" and clicked OK
Ticked FF* and FF* and clicked Recover and chose E:\##\XYZ\ as the destination
and clicked OK and both files were recovered.
Used Windows Explorer to drag-drop Move GG*.ini and FF*.ini from E:\##\XYZ\ to E:\##\XYZ\ ... \#-5-#\
HashMyFiles confirms that Recuva perfectly recovered from W:\ to E:##
the deleted files which were preserved in long path that was renamed to become E:\#0.
The only problem is that regardless of whether Recuva is dealing with a "Not Deleted" or "Excellent" file,
it is unable to restore with a destination path and name that exceeds 257 characters,
which is two short of the 259 limit for windows Explorer.
Just for fun I selected BB*. CC*, and DD for recovery, creating a new destination E:\#0\
got the expected "Maximum path length exceeded"
Unchecked DD* and successfully recovered BB* and CC*.
Although recovery to the destination E:\#1\ has a path that 3 charaxters longer than E:\,
only two of those characters appear to count - the end result is a destination length of 258 characters.
The Test files AA*.ini through to GG*.ini were created by
MakeLong.bat
@ECHO OFF & setlocal EnableDelayedExpansion ECHO Script %~f0 revised %~t0SET “Parent=##”
SET “BASE=%Parent%\XYZ”
SET “Segment=[---------------------FIFTY----------------------]”
SET “MY-PATH=%Base%(1%Segment%1\2%Segment%2\3%Segment%3\4%Segment%4)#-5-#”IF NOT EXIST "%MY-PATH%" MD “%MY-PATH%”
ECHO A %TIME% A > “%MY-PATH%\AA–12-A.INI”
ECHO X %TIME% X > “%MY-PATH%\XX–12-X.INI”
ECHO B %TIME% B > “%MY-PATH%\BB–24---------ZKZ-B.INI”
ECHO C %TIME% C > “%MY-PATH%\CC–25---------YLY–C.INI”
ECHO D %TIME% D > “%MY-PATH%\DD–26---------XMX—D.INI”
ECHO E %TIME% E > “%MY-PATH%\EE–27---------WNW----E.INI”
ECHO F %TIME% F > “%MY-PATH%\FF–28---------VPV-----F.INI”
SET “BIG-NAME=GG–29---------UQU------G.INI”
SET “LONG-NAME=HH–30---------TRT-------H.INI”
ECHO G %TIME% G > “%MY-PATH%%BIG-NAME%”
ECHO H %TIME% H > “%MY-PATH%%LONG-NAME%” > NUL
IF NOT EXIST “%MY-PATH%%BIG-NAME%” ECHO ERROR “%BIG-NAME%” IS TOO LONG
IF EXIST “%MY-PATH%%LONG-NAME%” ECHO ERROR “%LONG-NAME%” IS TOO SHORTDIR “%MY-PATH%”*.INI | FIND “.”
TREE %PARENT% /F | FIND /V /I “VOLUME”
DIR %PARENT%*.INI /S /B > REPORT.TXTCALL HEADER 248
TYPE REPORT.LST
ECHO(
CALL HEADER
TYPE REPORT.LST
ECHO(SET ANS=N & SET /P ANS="Delete contents of “%Base%*” ? D(elete) / N(o) :- "
IF /I “!ANS!” EQU “D” (RD /S /Q %BASE%) ELSE (ECHO “!ANS!” Retaining “%BASE%*”)
The above script creates the file REPORT.TXT and calls another script HEADER.BAT which produces REPORT.LST
HEADER.BAT is in the same folder (I am usingW:\Drive_F_Long_Path_Bats\) as Makelong.Bat.
Header.bat will take a file REPORT.TXT and remove extraneous TAB characters introduced by SysExporter,
and then sort the list by any chosen value (such as 248 above), or by its default setting of 247
and everything that is shorter than the chosen length will appear after everything that reaches or exceeds the chosen length
and then place a header which calibrates the length.
This focusses attention upon the actual paths that are close to the maxium length allowed by Windows of 259 characters
HEADER.BAT is :-
@ECHO OFF & setlocal EnableDelayedExpansion ECHO Script %~f0 revised %~t0 SET /A SORT=247 SET /A MAX=259 IF "%1"=="" CALL :S %SORT% & GOTO :EOF:S
SET “STR=” & FOR /L %%N IN (0,10,%MAX%) DO SET “STR=!STR!..'…;”
SET /A NH=%1-1
SET /A NG=%MAX%-1
SET “STR=!STR:~0,%NH%!S!STR:~%1,%MAX%!”
ECHO !STR:~0,%NG%!M :- S(ort)=%1 M(ax)=%MAX% > REPORT.LST
MORE /T0 REPORT.TXT | sort /R /+%1 >> REPORT.LST