-> [Go to the download page] -> [Download Now]
@echo off goto begin ::----------------------------------------------------------------------------- :: File Name: "xcpt.bat" - eXtended CoPy Test BATch for Windows7 HP 64bit(x64) :: and the related Backup/Copy Softwares :: :: Copyright: Public Domain Software (NOT TO BE SHAREWARE OR FREEWARE) :: :: Version (??: secondary series; can be revised by somebodies) :: *.*?? by *** May be revised for something :: :: Version (ps: primary series; reserved for S. ) :: 1.?ps by S. Modified to support extended attribute list. :: 1.1ps by S. Command path selection etc. modified. :: 1.0ps by S. Created for Robocopy, RichCopy, FastCopy, Fire File Copy etc. :: :: Related Softwares (required): :: :: - Robocopy in Windows7 Home Premium, 64-bit Version 6.1 (Build 7600) :: - RichCopy Version: 4,0,217,0 (freeware, 32/64bit) :: http://technet.microsoft.com/ja-jp/magazine/2009.04.utilityspotlight.aspx :: - FastCopy(64bit) ver2.03 (Admin) (freeware, 64bit) :: http://ipmsg.org/tools/fastcopy.html :: - Fire File Copy Version : 4.9.1.0(unicode) (freeware, 32bit) :: http://www.k3.dion.ne.jp/~kitt/pc/sw/ffc/ :: - FileVisor6 ver6.4.7.1 (shareware, 32bit) :: http://www.lightship.co.jp/FileVisor6/ :: - WinFM2008 V2.13 (Build 419) (x64 - unicode version) (shareware, 64bit) :: http://homepage3.nifty.com/annsHome/WinFM2008.htm :: - Far Manager v2.0 build 1666 x64 (2010-09-10) (freeware, 64bit) :: http://www.farmanager.com/download.php?p=64 :: - SubInAcl version 5.2.3790.1180 (freeware, 32bit) :: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&displaylang=en :: - LADS - List Alternate Data Streams 4.10 (freeware, 32bit) :: http://www.heysoft.de/en/software/lads.php?lang=EN :: - "xcp.bat" - eXtended CoPy BATch for Windows7 HP 64bit(x64) :: :: Notes :: - Attribute characters of Windows7 Explorer :: (that should be used for Filers, Archivers and Backup/Copy Softwares) :: Attr:R (READONLY) :: Attr:H (HIDDEN) :: Attr:S (SYSTEM) :: Attr:D (DIRECTORY) :: Attr:A (ARCHIVE) :: Attr:N (NORMAL) :: Attr:T (TEMPORARY) :: Attr:P (SPARSE_FILE) :: Attr:L (REPARSE_POINT) :: Attr:C (COMPRESSED) :: Attr:O (OFFLINE) :: Attr:I (NOT_CONTENT_INDEXED) :: Attr:E (ENCRYPTED) :: Attr:V (VIRTUAL) :: :: - Attribute characters (MJL extension) :: (expected to be used for Filers, Archivers and Backup/Copy Softwares) :: Attr:M (Volume Mount Points) :: Attr:J (Junction Points) :: Attr:L (Symbolic Links only) ::----------------------------------------------------------------------------- :begin set _CP_FSN= for /F "usebackq skip=3 tokens=2 delims=:" %%i in (`fsutil fsinfo volumeinfo \`) do ( if "%%i"==" NTFS" set _CP_FSN=NTFS if "%%i"==" FAT32" set _CP_FSN=FAT32 if "%%i"==" FAT" set _CP_FSN=FAT goto eol ) :eol if exist "%ProgramFiles%\Windows Resource Kits\Tools\" ( set "_CP_RKT=%ProgramFiles%" ) else if exist "%ProgramFiles(x86)%\Windows Resource Kits\Tools\" ( set "_CP_RKT=%ProgramFiles(x86)%" ) else ( set "_CP_RKT=%SystemDrive%\usr" ) set _CP_RKT=%_CP_RKT%\Windows Resource Kits\Tools\ if .%1==.-p goto purge if .%1==.-a goto arrange if .%1==.-t goto test :usage echo Usage: echo %~n0 -p/-a/-t [-man] [-vmp DRV] [ARG..] echo -p: Purge DIR./FILE for Copy Test echo -a: Arrange DIR./FILE for Copy Test echo -t: Copy Test for Backup/Copy Softwares echo -man: Enable manual operation for FileVisor6, WinFM2008, Far Manager (with -a ) echo -vmp: Enable operation for Volume Mount Points (with -a operator) echo DRV: Drive Character (with -a operator, e.g. d: ) echo ARG: Optional Argument echo. echo e.g. %~n0 -p echo e.g. %~n0 -a -man -vmp d: echo e.g. %~n0 -t goto exit :purge echo Purge DIR./FILE for Copy Test ================================================= for /D %%i in (\X0 \X0_ALL0 \X0_ALL1D \X0_ALL1F \X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( if exist %%i\DIR_0M\ rd /S /Q %%i\DIR_0M if exist %%i\DIR_0M\ goto abort call xcp -frc -rob -p %%i if exist %%i\ rd %%i if exist %%i\ goto abort ) echo Done: %~n0 goto exit :arrange echo Arrange DIR./FILE for Copy Test =============================================== for /D %%i in (\X0 \X0_ALL0 \X0_ALL1D \X0_ALL1F \X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( echo Aborted: "%%i" is already exist. ) if .%2==.-vmp if not exist "%~3" ( echo Aborted: "%~3" is not exist. goto exit ) for /D %%i in (\X0 \X0_ALL0 \X0_ALL1D \X0_ALL1F \X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( goto exit ) :: Enable/Disable manual operation for FileVisor6(\X5), WinFM2008(\X6), Far Manager(\X7) set _CP_MAN= if .%2==.-man ( set _CP_MAN= \X5 \X6 \X7 shift /2 ) for /D %%i in (\X1 \X2 \X3 \X4%_CP_MAN%) do if not exist %%i\ ( md %%i if errorlevel 1 goto abort ) pushd . :: Arrange DIR./FILE with all Attr. to be reset md \X0 if errorlevel 1 goto abort cd \X0 if errorlevel 1 goto abort md DIR_0 if errorlevel 1 goto abort if .%_CP_FSN%==.NTFS ( mklink /J DIR_0J DIR_0 if errorlevel 1 goto abort mklink /D DIR_0L DIR_0 if errorlevel 1 goto abort ) echo 4MB_0.TXT> 4MB$0.TXT fsutil file createnew 4MB$1.TXT 4194304 > nul if errorlevel 1 goto abort copy /b 4MB$0.TXT+4MB$1.TXT 4MB_0.TXT > nul if errorlevel 1 goto abort if exist 4MB$?.TXT del 4MB$?.TXT if exist 4MB$?.TXT goto abort echo 1KB_0.TXT> 1KB_0.TXT cd \ if errorlevel 1 goto abort ren X0 X0_ALL0 if errorlevel 1 goto abort :: Arrange DIR. with all Attr. to be set md \X0 if errorlevel 1 goto abort cd \X0 if errorlevel 1 goto abort md DIR_1 if errorlevel 1 goto abort if .%_CP_FSN%==.NTFS ( mklink /J DIR_1J DIR_1 if errorlevel 1 goto abort mklink /D DIR_1L DIR_1 if errorlevel 1 goto abort ) cd \ if errorlevel 1 goto abort ren X0 X0_ALL1D if errorlevel 1 goto abort :: Arrange FILE with all Attr. to be set md \X0 if errorlevel 1 goto abort cd \X0 if errorlevel 1 goto abort echo 4MB_1.TXT> 4MB$0.TXT fsutil file createnew 4MB$1.TXT 4194304 > nul if errorlevel 1 goto abort copy /b 4MB$0.TXT+4MB$1.TXT 4MB_1.TXT > nul if errorlevel 1 goto abort if exist 4MB$?.TXT del 4MB$?.TXT if exist 4MB$?.TXT goto abort echo 1KB_1.TXT> 1KB_1.TXT cd \ if errorlevel 1 goto abort ren X0 X0_ALL1F if errorlevel 1 goto abort :: Merge arranged DIR./FILE md \X0 if errorlevel 1 goto abort popd if exist \X0\ call xcp -frc -fc2 -c \X0 \X0_ALL0 if exist \X0\ call xcp -frc -fc2 -c \X0 \X0_ALL1D : if exist \X0\ call xcp -frc -fc2 -c \X0 \X0_ALL1F if exist \X0\ call xcp -frc -ric -r \X0 \X0_ALL0 if exist \X0\ call xcp -frc -ric -sd \X0 \X0_ALL1D if exist \X0\ call xcp -frc -ric -sf \X0 \X0_ALL1F for /D %%i in (\X0_ALL0 \X0_ALL1D \X0_ALL1F) do if exist %%i\ ( call xcp -frc -rob -p %%i if exist %%i\ rd %%i if exist %%i\ goto abort ) pushd . cd \X0 if errorlevel 1 goto abort md DIR_0M if errorlevel 1 goto abort :BUG: Attr:H (HIDDEN) not reset with Attr:A (ARCHIVE) for FILE (reset for DIR.) with RichCopy ("xcp -ric -r DST SRC") :BUG: Attr:S (SYSTEM) not reset with Attr:A (ARCHIVE) for FILE (reset for DIR.) with RichCopy ("xcp -ric -r DST SRC") echo YHA.TXT> YHA.TXT attrib +H +A YHA.TXT echo YSA.TXT> YSA.TXT attrib +S +A YSA.TXT :: Set Attr:P (SPARSE_FILE) for FILE if .%_CP_FSN%==.NTFS for %%i in (4MB_1 1KB_1) do ( attrib -R -H -S %%i.TXT fsutil sparse setflag %%i.TXT if errorlevel 1 goto abort ) :: Make Alternate Data Streams for DIR./FILE if .%_CP_FSN%==.NTFS ( attrib -R -H -S DIR_1 echo DIR_0:STREAM.TXT> DIR_0:STREAM.TXT echo DIR_0M:STREAM.TXT> DIR_0M:STREAM.TXT echo 4MB_0.TXT:STREAM.TXT> 4MB_0.TXT:STREAM.TXT echo 1KB_0.TXT:STREAM.TXT> 1KB_0.TXT:STREAM.TXT echo DIR_1:STREAM.TXT> DIR_1:STREAM.TXT echo 4MB_1.TXT:STREAM.TXT> 4MB_1.TXT:STREAM.TXT echo 1KB_1.TXT:STREAM.TXT> 1KB_1.TXT:STREAM.TXT ) :: Make Hard Links for FILE if .%_CP_FSN%==.NTFS for %%i in (4MB_0 1KB_0 4MB_1 1KB_1) do ( mklink /H %%iH.TXT %%i.TXT if errorlevel 1 goto abort ) :: Make Symbolic Links for FILE if .%_CP_FSN%==.NTFS for %%i in (4MB_0 1KB_0 4MB_1 1KB_1) do ( mklink %%iL.TXT %%i.TXT if errorlevel 1 goto abort ) :: Make Volume Mount Points for DIR. if .%2==.-vmp if exist "%~3" ( if .%_CP_FSN%==.NTFS for /F "usebackq" %%i in (`mountvol %~3 /L`) do ( echo mountvol %~3 /L mountvol %~3 /L if errorlevel 1 goto abort echo mountvol DIR_0M %%i mountvol DIR_0M %%i if errorlevel 1 goto abort echo mountvol DIR_0M /L mountvol DIR_0M /L if errorlevel 1 goto abort ) shift /2 shift /2 ) :: Enable Very Long Paths over 260 char. md \X0\0\0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde if errorlevel 1 goto abort ren \X0\0 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde if errorlevel 1 goto abort :: To save extended attribute list if exist "%~dp0xat.bat" copy nul XAT.TXT > nul :: Save order of DIR. entries (FAT32/FAT) if not .%_CP_FSN%==.NTFS forfiles > XODE.TXT :: Save Access Control Lists if .%_CP_FSN%==.NTFS for /D %%i in (\X0) do if exist %%i\ ( copy nul XACL_S.TXT > nul copy nul XACL_I.TXT > nul copy nul XACL_SG.TXT > nul copy nul XACL_IG.TXT > nul copy nul XACL_SS.TXT > nul copy nul XACL_IS.TXT > nul rem if exist "%_CP_RKT%subinacl.exe" ( "%_CP_RKT%subinacl" /outputlog=XACL_S.TXT /stringreplaceonoutput=" %%~fi\\"=" " /nostatistic /file * /display=sddl if errorlevel 1 goto abort rem ) else ( forfiles /C "cmd /U /C if not @file==\"$\" icacls @file /save $ /L & echo.>> $& copy /b XACL_I.TXT+$ XACL_I.TXT" > nul if errorlevel 1 goto abort if exist $ del $ if exist $ goto abort rem ) rem "%_CP_RKT%subinacl" /nostatistic /file * /grant="Administrator"=F > nul rem if errorlevel 1 goto abort icacls * /grant:r "Administrator":"(GA)" /L /Q if errorlevel 1 goto abort rem if exist "%_CP_RKT%subinacl.exe" ( "%_CP_RKT%subinacl" /outputlog=XACL_SG.TXT /stringreplaceonoutput=" %%~fi\\"=" " /nostatistic /file * /display=sddl if errorlevel 1 goto abort rem ) else ( forfiles /C "cmd /U /C if not @file==\"$\" icacls @file /save $ /L & echo.>> $& copy /b XACL_IG.TXT+$ XACL_IG.TXT" > nul if errorlevel 1 goto abort if exist $ del $ if exist $ goto abort rem ) md Microsoft if errorlevel 1 goto abort attrib +S +I Microsoft rem if exist "%_CP_RKT%subinacl.exe" ( rem "%_CP_RKT%subinacl" /outputlog=xwin.txt /subdirectories "%SystemDrive%\Windows\\" /display=sddl rem "%_CP_RKT%subinacl" /outputlog=xpro.txt /subdirectories "%SystemDrive%\Program Files\\" /display=sddl rem "%_CP_RKT%subinacl" /outputlog=xuse.txt /subdirectories "%SystemDrive%\Users\\" /display=sddl "%_CP_RKT%subinacl" /outputlog=XACL_SS.TXT /stringreplaceonoutput=" %SystemDrive%\Windows\ServiceProfiles\LocalService\AppData\LocalLow\Microsoft\\"=" " /nostatistic /subdirectories %SystemDrive%\Windows\ServiceProfiles\LocalService\AppData\LocalLow\Microsoft\ /display=sddl rem: "%_CP_RKT%subinacl" /outputlog=XACL_SS.TXT /stringreplaceonoutput=" C:\Windows\ServiceProfiles\LocalService\AppData\LocalLow\Microsoft\\"=" " /nostatistic /subdirectories C:\Windows\ServiceProfiles\LocalService\AppData\LocalLow\Microsoft\ /display=sddl if errorlevel 1 goto abort rem ) else ( rem icacls "%SystemDrive%\Windows" /save xwin.txt /T /L rem icacls "%SystemDrive%\Program Files" /save xpro.txt /T /L rem icacls "%SystemDrive%\Users" /save xuse.txt /T /L forfiles /P "%SystemDrive%\Windows\ServiceProfiles\LocalService\AppData\LocalLow\Microsoft" /S /C "cmd /U /C if not @file==\"$\" icacls @path /save %%~fi\$ /L & echo.>> %%~fi\$& copy /b %%~fi\XACL_IS.TXT+%%~fi\$ %%~fi\XACL_IS.TXT" > nul rem: forfiles /P "C:\Windows\ServiceProfiles\LocalService\AppData\LocalLow\Microsoft" /S /C "cmd /U /C if not @file==\"$\" icacls @path /save %%~fi\$ /L & echo.>> %%~fi\$& copy /b %%~fi\XACL_IS.TXT+%%~fi\$ %%~fi\XACL_IS.TXT" > nul if errorlevel 1 goto abort if exist $ del $ if exist $ goto abort rem ) ) :: Reset/Set Attr. for DIR./FILE attrib -R -H -S -A -I *_0* /S /D /L attrib +R +H +S +A +I *_1* /S /D /L :BUG: Creation Time not copied for FILE of READONLY (copied for DIR.) with WinFM2008 : attrib -R -H -S *_1* /S /D /L : attrib +H +S *_1* /S /D /L :: Save extended attribute list if exist "%~dp0xat.bat" ( rem forfiles /C "cmd /C (\"%~dp0xat\" -wtf @path)" | sort /+22 > XAT.TXT forfiles /C "cmd /C (\"%~dp0xat\" @path)" | sort /+22 > XAT.TXT ) :: Check for SRC: \X0 popd if .%_CP_FSN%==.NTFS for /D %%i in (\X0) do if exist %%i\ ( for %%j in (4MB_1 4MB_1H 4MB_1L 1KB_1 1KB_1H 1KB_1L) do ( echo %%i\%%j.TXT: fsutil sparse queryflag %%i\%%j.TXT fsutil sparse queryrange %%i\%%j.TXT ) ) if .%_CP_FSN%==.NTFS for /D %%i in (\X0) do if exist %%i\ ( compact /A %%i\* ) if .%_CP_FSN%==.NTFS for /D %%i in (\X0) do if exist %%i\ ( for %%j in (4MB_0 1KB_0 4MB_1 1KB_1) do ( echo Hard Links of %%i\%%j.TXT: fsutil hardlink list %%i\%%j.TXT ) ) if .%_CP_FSN%==.NTFS for /D %%i in (\X0) do if exist %%i\ ( rem dir /A /R %%i lads %%i ) if exist \X0\ ( echo Check entries in "\X0" start \X0 ) echo Done: %~n0 goto exit :test echo Copy Test for Backup/Copy Softwares =========================================== :: Disable Very Long Paths over 260 char. ren \X0\0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde 0 if errorlevel 1 goto abort :: Copy Test without Very Long Paths over 260 char. : if exist \X1\ call xcp -frc -rob -c \X1 \X0 if exist \X2\ call xcp -frc -ric -c \X2 \X0 : if exist \X3\ call xcp -frc -fc2 -c \X3 \X0 : if exist \X4\ call xcp -frc -ffc -c \X4 \X0 if exist \X5\ call xcp -frc -fv6 -c \X5 \X0 : if exist \X6\ call xcp -frc -wfm -c \X6 \X0 : if exist \X7\ call xcp -frc -far -c \X7 \X0 :: Enable Very Long Paths over 260 char. ren \X0\0 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde if errorlevel 1 goto abort :: Copy Test with Very Long Paths over 260 char. :: Error with RichCopy (-ric) and FileVisor6 (-fv6) if exist \X1\ call xcp -frc -rob -c \X1 \X0 : if exist \X2\ call xcp -frc -ric -c \X2 \X0 if exist \X3\ call xcp -frc -fc2 -c \X3 \X0 if exist \X4\ call xcp -frc -ffc -c \X4 \X0 : if exist \X5\ call xcp -frc -fv6 -c \X5 \X0 if exist \X6\ call xcp -frc -wfm -c \X6 \X0 if exist \X7\ call xcp -frc -far -c \X7 \X0 :: Save order of DIR. entries (FAT32/FAT) pushd . if not .%_CP_FSN%==.NTFS for /D %%i in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( cd %%i if errorlevel 1 goto abort forfiles > XODE.TXT ) :: Save Access Control Lists if .%_CP_FSN%==.NTFS for /D %%i in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( cd %%i if errorlevel 1 goto abort if exist Microsoft\ rd /S /Q Microsoft if exist Microsoft\ goto abort copy nul XACL_SG.TXT > nul copy nul XACL_IG.TXT > nul copy nul XACL_SS.TXT > nul copy nul XACL_IS.TXT > nul rem if exist "%_CP_RKT%subinacl.exe" ( "%_CP_RKT%subinacl" /outputlog=XACL_SG.TXT /stringreplaceonoutput=" %%~fi\\"=" " /nostatistic /file * /display=sddl if errorlevel 1 goto abort rem ) else ( forfiles /C "cmd /U /C if not @file==\"$\" icacls @file /save $ /L & echo.>> $& copy /b XACL_IG.TXT+$ XACL_IG.TXT" > nul if errorlevel 1 goto abort if exist $ del $ if exist $ goto abort rem ) ) popd pushd . if .%_CP_FSN%==.NTFS for /D %%i in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( rem BUG?: icacls: "S:AINO_ACCESS_CONTROL" may be set with Robocopy (-rob) if %%i==\X1 call xcp -frc -rob -c %%i %SystemDrive%\Windows\ServiceProfiles\LocalService\AppData\LocalLow rem if %%i==\X1 call xcp -frc -rob -c %%i C:\Windows\ServiceProfiles\LocalService\AppData\LocalLow if %%i==\X2 call xcp -frc -ric -c %%i %SystemDrive%\Windows\ServiceProfiles\LocalService\AppData\LocalLow rem: if %%i==\X2 call xcp -frc -ric -c %%i C:\Windows\ServiceProfiles\LocalService\AppData\LocalLow if %%i==\X3 call xcp -frc -fc2 -c %%i %SystemDrive%\Windows\ServiceProfiles\LocalService\AppData\LocalLow rem: if %%i==\X3 call xcp -frc -fc2 -c %%i C:\Windows\ServiceProfiles\LocalService\AppData\LocalLow if %%i==\X4 call xcp -frc -ffc -c %%i %SystemDrive%\Windows\ServiceProfiles\LocalService\AppData\LocalLow rem: if %%i==\X4 call xcp -frc -ffc -c %%i C:\Windows\ServiceProfiles\LocalService\AppData\LocalLow if %%i==\X5 call xcp -frc -fv6 -c %%i %SystemDrive%\Windows\ServiceProfiles\LocalService\AppData\LocalLow rem: if %%i==\X5 call xcp -frc -fv6 -c %%i C:\Windows\ServiceProfiles\LocalService\AppData\LocalLow if %%i==\X6 call xcp -frc -wfm -c %%i %SystemDrive%\Windows\ServiceProfiles\LocalService\AppData\LocalLow rem: if %%i==\X6 call xcp -frc -wfm -c %%i C:\Windows\ServiceProfiles\LocalService\AppData\LocalLow if %%i==\X7 call xcp -frc -far -c %%i %SystemDrive%\Windows\ServiceProfiles\LocalService\AppData\LocalLow rem: if %%i==\X7 call xcp -frc -far -c %%i C:\Windows\ServiceProfiles\LocalService\AppData\LocalLow if exist %%i\Microsoft\ ( rem if exist "%_CP_RKT%subinacl.exe" ( "%_CP_RKT%subinacl" /outputlog=%%~fi\XACL_SS.TXT /stringreplaceonoutput=" %%~fi\Microsoft\\"=" " /nostatistic /subdirectories %%~fi\Microsoft\ /display=sddl if errorlevel 1 goto abort rem ) else ( forfiles /P "%%i\Microsoft" /S /C "cmd /U /C if not @file==\"$\" icacls @path /save %%~fi\$ /L & echo.>> %%~fi\$& copy /b %%~fi\XACL_IS.TXT+%%~fi\$ %%~fi\XACL_IS.TXT" > nul if errorlevel 1 goto abort if exist %%i\$ del %%i\$ if exist %%i\$ goto abort rem ) ) if not exist %%i\Microsoft\ md %%i\Microsoft if not exist %%i\Microsoft\ goto abort ) :: Save extended attribute list if exist "%~dp0xat.bat" for /D %%i in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( cd %%i if errorlevel 1 goto abort rem forfiles /C "cmd /C (\"%~dp0xat\" -wtf @path)" | sort /+22 > XAT.TXT forfiles /C "cmd /C (\"%~dp0xat\" @path)" | sort /+22 > XAT.TXT ) popd :: Check for DST: \X1 .. \X7 if exist XODE.log del XODE.log if exist XODE.log goto abort if not .%_CP_FSN%==.NTFS echo Check order of DIR. entries (FAT32/FAT)> XODE.log if not .%_CP_FSN%==.NTFS for /D %%i in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( echo ------------------------------------------------------------------------------->> XODE.log fc \X0\XODE.TXT %%i\XODE.TXT >> XODE.log ) if exist XODE.log ( echo. echo Check "XODE.log" start XODE.log ) if .%_CP_FSN%==.NTFS for /D %%i in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( for %%j in (4MB_1 4MB_1H 4MB_1L 1KB_1 1KB_1H 1KB_1L) do ( echo %%i\%%j.TXT: fsutil sparse queryflag %%i\%%j.TXT rem fsutil sparse queryrange %%i\%%j.TXT ) ) if .%_CP_FSN%==.NTFS for /D %%i in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( compact /A %%i\* ) if .%_CP_FSN%==.NTFS for /D %%i in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( for %%j in (4MB_0 1KB_0 4MB_1 1KB_1) do ( echo Hard Links of %%i\%%j.TXT: fsutil hardlink list %%i\%%j.TXT ) ) if exist XACL_SG.log del XACL_SG.log if exist XACL_SG.log goto abort if .%_CP_FSN%==.NTFS for %%i in (\X0\XACL_SG.TXT) do if 0%%~zi GTR 0 ( echo Check DACL etc. with subinacl for granted ACL> XACL_SG.log for /D %%j in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%j\ ( echo ------------------------------------------------------------------------------->> XACL_SG.log fc /U \X0\XACL_SG.TXT %%j\XACL_SG.TXT >> XACL_SG.log 2>>&1 ) echo. echo Check "XACL_SG.log" start XACL_SG.log ) if exist XACL_IG.log del XACL_IG.log if exist XACL_IG.log goto abort if .%_CP_FSN%==.NTFS for %%i in (\X0\XACL_IG.TXT) do if 0%%~zi GTR 0 ( echo Check DACL etc. with icacls for granted ACL> XACL_IG.log for /D %%j in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%j\ ( echo ------------------------------------------------------------------------------->> XACL_IG.log fc /U \X0\XACL_IG.TXT %%j\XACL_IG.TXT >> XACL_IG.log 2>>&1 ) echo. echo Check "XACL_IG.log" start XACL_IG.log ) if exist XACL_SS.log del XACL_SS.log if exist XACL_SS.log goto abort if .%_CP_FSN%==.NTFS for %%i in (\X0\XACL_SS.TXT) do if 0%%~zi GTR 0 ( echo Check Owner, Group and SACL etc. with subinacl for system> XACL_SS.log for /D %%j in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%j\ ( echo ------------------------------------------------------------------------------->> XACL_SS.log fc /U \X0\XACL_SS.TXT %%j\XACL_SS.TXT >> XACL_SS.log 2>>&1 ) echo. echo Check "XACL_SS.log" start XACL_SS.log ) if exist XACL_IS.log del XACL_IS.log if exist XACL_IS.log goto abort if .%_CP_FSN%==.NTFS for %%i in (\X0\XACL_IS.TXT) do if 0%%~zi GTR 0 ( echo Check Owner, Group and SACL etc. with icacls for system> XACL_IS.log for /D %%j in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%j\ ( echo ------------------------------------------------------------------------------->> XACL_IS.log fc /U \X0\XACL_IS.TXT %%j\XACL_IS.TXT >> XACL_IS.log 2>>&1 ) echo. echo Check "XACL_IS.log" start XACL_IS.log ) if exist XAT.log del XAT.log if exist XAT.log goto abort if exist "%~dp0xat.bat" for %%i in (\X0\XAT.TXT) do if 0%%~zi GTR 0 ( echo Check extended attributes etc.> XAT.log for /D %%j in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%j\ ( echo ------------------------------------------------------------------------------->> XAT.log fc \X0\XAT.TXT %%j\XAT.TXT >> XAT.log 2>>&1 ) echo. echo Check "XAT.log" start XAT.log ) if .%_CP_FSN%==.NTFS for /D %%i in (\X1 \X2 \X3 \X4 \X5 \X6 \X7) do if exist %%i\ ( rem dir /A /R %%i lads %%i ) for /D %%i in (\X7 \X6 \X5 \X4 \X3 \X2 \X1) do if exist %%i\ ( start %%i timeout /T 1 /NOBREAK > nul ) if exist \X1\ echo DIR./FILE copied from \X0 to \X1 with Robocopy if exist \X2\ echo DIR./FILE copied from \X0 to \X2 with RichCopy if exist \X3\ echo DIR./FILE copied from \X0 to \X3 with FastCopy if exist \X4\ echo DIR./FILE copied from \X0 to \X4 with Fire File Copy if exist \X5\ echo DIR./FILE copied from \X0 to \X5 with FileVisor6 if exist \X6\ echo DIR./FILE copied from \X0 to \X6 with WinFM2008 if exist \X7\ echo DIR./FILE copied from \X0 to \X7 with Far Manager echo Check Very Long Paths, Links of Reparse Points, Time Stamps and Attributes etc. echo Done: %~n0 goto exit :abort echo. echo Aborted: %~n0 :exit set _CP_FSN= set _CP_RKT= set _CP_MAN= pause :end