@echo off
	goto begin

::-----------------------------------------------------------------------------
:: File Name: "xat.bat" - eXtended ATtrib BATch for Windows7 HP 64bit(x64)
::
:: - To display File Attributes and (n)NumberOfLinks etc.
::   File Attributes (Windows)
::   http://msdn.microsoft.com/en-us/library/ee332330.aspx
::   BY_HANDLE_FILE_INFORMATION Structure (Windows)
::   http://msdn.microsoft.com/en-us/library/aa363788.aspx
::   FILE_INFO_BY_HANDLE_CLASS Enumeration (Windows)
::   http://msdn.microsoft.com/en-us/library/aa364228.aspx
::
:: - Attribute characters of Windows7 Explorer (with MJL extension)
::   (that should be used for Filers, Archivers and Backup/Copy Softwares)
::	0x00000001 FILE_ATTRIBUTE_READONLY		R: READONLY
::	0x00000002 FILE_ATTRIBUTE_HIDDEN		H: HIDDEN
::	0x00000004 FILE_ATTRIBUTE_SYSTEM		S: SYSTEM
::	0x00000010 FILE_ATTRIBUTE_DIRECTORY		D: DIRECTORY
::	0x00000020 FILE_ATTRIBUTE_ARCHIVE		A: ARCHIVE
::	0x00000040 FILE_ATTRIBUTE_DEVICE		?: DEVICE (reserved)
::	0x00000080 FILE_ATTRIBUTE_NORMAL		N: NORMAL
::	0x00000100 FILE_ATTRIBUTE_TEMPORARY		T: TEMPORARY
::	0x00000200 FILE_ATTRIBUTE_SPARSE_FILE		P: SPARSE FILE
::	0x00000400 FILE_ATTRIBUTE_REPARSE_POINT		M: Volume Mount Point
::	0x00000400 FILE_ATTRIBUTE_REPARSE_POINT		J: Junction Point
::	0x00000400 FILE_ATTRIBUTE_REPARSE_POINT		L: Symbolic Link (only)
::	0x00000400 FILE_ATTRIBUTE_REPARSE_POINT		?: REPARSE POINT (unknown)
::	0x00000800 FILE_ATTRIBUTE_COMPRESSED		C: COMPRESSED
::	0x00001000 FILE_ATTRIBUTE_OFFLINE		O: OFFLINE
::	0x00002000 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED	I: NOT CONTENT INDEXED
::	0x00004000 FILE_ATTRIBUTE_ENCRYPTED		E: ENCRYPTED
::	0x00010000 FILE_ATTRIBUTE_VIRTUAL		V: VIRTUAL
::	(n)NumberOfLinks: ##				No. of Hard Links (2-99)
::
:: 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.1ps by S.  Display method improved.
:: 1.0ps by S.	Created for fileinfo.exe Ver10 2008/05/13 in SDFMach: sdfw.zip
::
:: Related Softwares (required):
:: - fileinfo.exe Ver10 2008/05/13 in SDFMach: sdfw.zip (freeware, 32bit)
::   http://hp.vector.co.jp/authors/VA007219/sdfw.zip
::
:: Related Softwares (reference):
:: - Far Manager v2.0 build 1666 x64 (2010-09-10) (freeware, 64bit)
::   http://www.farmanager.com/download.php?p=64
::
:: Notes
:: - Attribute characters of fileinfo.exe Ver10 2008/05/13 in SDFMach: sdfw.zip
::   (cf. fileinfo.txt Ver10 2008/05/02 in SDFMach: sdfw.zip)
::	<DIR> DIRECTORY
::	A     ARCHIVE
::	S     SYSTEM
::	H     HIDDEN
::	R     READONLY
::	D     DEVICE
::	C     COMPRESSED
::	E     ENCRYPTED
::	Y     REPARSE_POINT SYMLINK (Reparse tag=a000000c)
::	M     REPARSE_POINT MOUNT_POINT (Reparse tag=a0000003)
::	L     REPARSE_POINT unknown
::	Z     SPARSE_FILE
::	I     NOT_CONTENT_INDEXED
::	O     OFFLINE
::	T     TEMPORARY
::	V     VIRTUAL
::-----------------------------------------------------------------------------

:begin
	setlocal enabledelayedexpansion
	set _AT_VRB=
	if .%1==.-vrb (
		set _AT_VRB=1
		shift /1
	)
	set _AT_WTF=
	if .%1==.-wtf (
		set _AT_WTF=1
		shift /1
	)
	set _AT_LOG=
	if .%1==.-log (
		set _AT_LOG=%~f2
		shift /1
		shift /1
	)
	set _AT_ATR=
	if .%1==.-req (
		set _AT_ATT=%~2
		for %%i in (A/a B/b C/c D/d E/e F/f G/g H/h I/i J/j K/k L/l M/m N/n O/o P/p Q/q R/r S/s T/t U/u V/v W/w X/x Y/y Z/z) do (
			for /F "tokens=1-2 delims=/" %%j in ("%%i") do (
				set _AT_WRK=*
				for /L %%l in (0,1,25) do (
					if "!_AT_ATT:~%%l,1!"=="%%j" set _AT_WRK=%%j
					if "!_AT_ATT:~%%l,1!"=="%%k" set _AT_WRK=%%k
				)
				if not %%j==Z set _AT_WRK=!_AT_WRK!,
			)
			set _AT_ATR=!_AT_ATR!!_AT_WRK!
		)
 		for /F "tokens=1-26 delims=," %%a in ("!_AT_ATR!") do (
rem			echo	"%%a%%b%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l%%m%%n%%o%%p%%q%%r%%s%%t%%u%%v%%w%%x%%y%%z"
			if %%n==N set _AT_ATR=a,b,c,*,e,f,g,h,i,*,k,*,*,*,o,p,q,r,s,t,u,v,*,*,y,*
			if %%z==Z set _AT_ATR=A,B,C,*,*,F,G,H,I,*,K,*,*,*,O,P,Q,R,S,T,U,V,*,*,Y,*
		)
		for /F "tokens=1-26 delims=," %%a in ("!_AT_ATR!") do (
rem			echo	"%%a%%b%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l%%m%%n%%o%%p%%q%%r%%s%%t%%u%%v%%w%%x%%y%%z"
			if "%_AT_LOG%"=="" (
				echo	%%r%%h%%s%%d%%a%%w%%n%%t%%p%%m%%j%%l%%x%%c%%o%%i%%e%%v	^(Requested and then Original/Modified Attr.^)
			) else (
				echo	%%r%%h%%s%%d%%a%%w%%n%%t%%p%%m%%j%%l%%x%%c%%o%%i%%e%%v	^(Requested and then Original/Modified Attr.^)>> "%_AT_LOG%"
			)
		)
		shift /1
		shift /1
	)
:	echo "%_AT_ATR%"
	if exist "%~f1" goto dispAttr

:usage
	echo Usage:
	echo  %~n0 [-vrb] [-wtf] [-log LOG] [-req ATR] OBJ [FWD] [ARG..]
	echo -vrb: Verbose Mode
	echo -wtf: Enable to display Last Written Time Field
	echo -log: Logging Mode
	echo -req: Request to change Attributes
	echo LOG:  Log File
	echo ATR:  Attributes to be requested (UPPER/lower: SET/reset)
	echo OBJ:  Objective DIR./FILE
	echo FWD:  Forwarding DIR./FILE for Reparse Points
	echo ARG:  Optional Argument
	echo.
	echo e.g. %~n0 -vrb -wtf -req RhSaCi objfile.txt
	echo e.g. %~n0 -vrb -wtf -req rHsAcI objfile.txt
	echo e.g. forfiles /P . /C "cmd /C xat -wtf @path"
	goto exit

:dispAttr
	set _AT_ATT=
	set /A _AT_WRK=0
	for /F "usebackq delims=" %%i in (`%~dp0fileinfo -r "%~f1"^|more`) do (
		set _AT_ATT=!_AT_ATT!%%i
		if !_AT_WRK! GEQ  4 if !_AT_WRK! LEQ 20 set _AT_ATT=!_AT_ATT!,
		set /A _AT_WRK+=1
	)
:	echo "%_AT_ATT%"
	for /F "tokens=1-17* delims=," %%a in ("%_AT_ATT%") do (
		set _AT_ATT=
rem		echo	"%%a%%b%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l%%m%%n%%o%%p%%q%%r"
rem			"a    bcdefghijklmnopqr"
rem		e.g.	"<DIR> ASHRDCYZIOTV 1* ba1ad973:001e000000022ff1 test"
rem			"           EM        "
rem			"            L        "
		if "%%c"=="A" (
			set _AT_ATT=!_AT_ATT!A,
		) else (
			set _AT_ATT=!_AT_ATT!a,
		)
		set _AT_ATT=!_AT_ATT!b,
		if "%%h"=="C" (
			set _AT_ATT=!_AT_ATT!C,
		) else (
			set _AT_ATT=!_AT_ATT!c,
		)
		if "%%a"=="<DIR>" (
			set _AT_ATT=!_AT_ATT!D,
		) else (
			set _AT_ATT=!_AT_ATT!d,
		)
		if "%%h"=="E" (
			set _AT_ATT=!_AT_ATT!E,
		) else (
			set _AT_ATT=!_AT_ATT!e,
		)
		set _AT_ATT=!_AT_ATT!f,g,
		if "%%e"=="H" (
			set _AT_ATT=!_AT_ATT!H,
		) else (
			set _AT_ATT=!_AT_ATT!h,
		)
		if "%%k"=="I" (
			set _AT_ATT=!_AT_ATT!I,
		) else (
			set _AT_ATT=!_AT_ATT!i,
		)
		if "%%i"=="M" (
			for /F "tokens=2 delims=?{" %%z in ("%%r") do if "%%z"=="\Volume" (
				set _AT_ATT=!_AT_ATT!j,
			) else (
				set _AT_ATT=!_AT_ATT!J,
			)
		) else (
			set _AT_ATT=!_AT_ATT!j,
		)
		set _AT_ATT=!_AT_ATT!k,
		if "%%i"=="Y" (
			set _AT_ATT=!_AT_ATT!L,
		) else (
			set _AT_ATT=!_AT_ATT!l,
		)
		if "%%i"=="M" (
			for /F "tokens=2 delims=?{" %%z in ("%%r") do if "%%z"=="\Volume" (
				set _AT_ATT=!_AT_ATT!M,
			) else (
				set _AT_ATT=!_AT_ATT!m,
			)
		) else (
			set _AT_ATT=!_AT_ATT!m,
		)
		if "%%a%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l%%m%%n"=="                 " (
			set _AT_ATT=!_AT_ATT!N,
		) else (
			set _AT_ATT=!_AT_ATT!n,
		)
		if "%%l"=="O" (
			set _AT_ATT=!_AT_ATT!O,
		) else (
			set _AT_ATT=!_AT_ATT!o,
		)
		if "%%j"=="Z" (
			set _AT_ATT=!_AT_ATT!P,
		) else (
			set _AT_ATT=!_AT_ATT!p,
		)
		set _AT_ATT=!_AT_ATT!q,
		if "%%f"=="R" (
			set _AT_ATT=!_AT_ATT!R,
		) else (
			set _AT_ATT=!_AT_ATT!r,
		)
		if "%%d"=="S" (
			set _AT_ATT=!_AT_ATT!S,
		) else (
			set _AT_ATT=!_AT_ATT!s,
		)
		if "%%m"=="T" (
			set _AT_ATT=!_AT_ATT!T,
		) else (
			set _AT_ATT=!_AT_ATT!t,
		)
		set _AT_ATT=!_AT_ATT!u,
		if "%%n"=="V" (
			set _AT_ATT=!_AT_ATT!V,
		) else (
			set _AT_ATT=!_AT_ATT!v,
		)
rem W?: DEVICE (reserved)
		if "%%g"=="D" (
			set _AT_ATT=!_AT_ATT!?,
		) else (
			set _AT_ATT=!_AT_ATT!-,
		)
rem X?: REPARSE POINT (unknown)
		if "%%i"=="L" (
			set _AT_ATT=!_AT_ATT!?,
		) else (
			set _AT_ATT=!_AT_ATT!-,
		)
rem No. of Hard Links (2-99) etc.
		if "%%q"==" " (
			set _AT_ATT=!_AT_ATT!%%p, %%r
		) else (
			set _AT_ATT=!_AT_ATT!%%p%%q,%%r
		)
	)
:	echo "%_AT_ATT%"
	for /F "tokens=1-26 delims=," %%a in ("%_AT_ATT%") do (
rem		echo	"%%a%%b%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l%%m%%n%%o%%p%%q%%r%%s%%t%%u%%v%%w%%x%%y%%z"
		if .%_AT_VRB%==.1 (
			if %%r==R echo	0x00000001 FILE_ATTRIBUTE_READONLY		R: READONLY
			if %%h==H echo	0x00000002 FILE_ATTRIBUTE_HIDDEN		H: HIDDEN
			if %%s==S echo	0x00000004 FILE_ATTRIBUTE_SYSTEM		S: SYSTEM
			if %%d==D echo	0x00000010 FILE_ATTRIBUTE_DIRECTORY		D: DIRECTORY
			if %%a==A echo	0x00000020 FILE_ATTRIBUTE_ARCHIVE		A: ARCHIVE
			if %%w==? echo	0x00000040 FILE_ATTRIBUTE_DEVICE		?: DEVICE ^(reserved^)
			if %%n==N echo	0x00000080 FILE_ATTRIBUTE_NORMAL		N: NORMAL
			if %%t==T echo	0x00000100 FILE_ATTRIBUTE_TEMPORARY		T: TEMPORARY
			if %%p==P echo	0x00000200 FILE_ATTRIBUTE_SPARSE_FILE		P: SPARSE FILE
			if %%m==M echo	0x00000400 FILE_ATTRIBUTE_REPARSE_POINT		M: Volume Mount Point
			if %%j==J echo	0x00000400 FILE_ATTRIBUTE_REPARSE_POINT		J: Junction Point
			if %%l==L echo	0x00000400 FILE_ATTRIBUTE_REPARSE_POINT		L: Symbolic Link ^(only^)
			if %%x==? echo	0x00000400 FILE_ATTRIBUTE_REPARSE_POINT		?: REPARSE POINT ^(unknown^)
			if %%c==C echo	0x00000800 FILE_ATTRIBUTE_COMPRESSED		C: COMPRESSED
			if %%o==O echo	0x00001000 FILE_ATTRIBUTE_OFFLINE		O: OFFLINE
			if %%i==I echo	0x00002000 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED	I: NOT CONTENT INDEXED
			if %%e==E echo	0x00004000 FILE_ATTRIBUTE_ENCRYPTED		E: ENCRYPTED
			if %%v==V echo	0x00010000 FILE_ATTRIBUTE_VIRTUAL		V: VIRTUAL
			if not %%y==1 echo	^(n^)NumberOfLinks: %%y				No. of Hard Links ^(2-99^)
		)
		if .%_AT_WTF%==.1 (
			set "_AT_WRK=%~nxt1"
		) else (
			set "_AT_WRK=%~nx1"
		)
		if "%_AT_LOG%"=="" (
			echo	%%r%%h%%s%%d%%a%%w%%n%%t%%p%%m%%j%%l%%x%%c%%o%%i%%e%%v %%y	!_AT_WRK!
		) else (
			echo	%%r%%h%%s%%d%%a%%w%%n%%t%%p%%m%%j%%l%%x%%c%%o%%i%%e%%v %%y	!_AT_WRK!>> "%_AT_LOG%"
		)
	)
	if "%_AT_ATR%"=="" goto exit

:execReq
:: if/THEN:
::  / R   H   S   A   I   P   C   M   J   L
:: / D/F D/F D/F D/F D/F D/F D/F D/F D/F D/F
:: -+---+---+---+---+---+---+---+---+---+---
:: r  1   1   1   1   1  -/0 1/1 1/- 1/- 1/0
:: h  0   1   0   0   0  -/1 1/1 1/- 1/- 1/1
:: s  0   0   1   0   0  -/1 1/1 1/- 1/- 1/1
:: a  1   1   1   1   1  -/1 1/1 1/- 1/- 1/1
:: i  1   1   1   1   1  -/1 1/1 1/- 1/- 1/1
:: p -/1 -/1 -/1 -/1 -/1 -/1 -/1 -/- -/- -/X
:: c 1/1 1/1 1/1 1/1 1/1 -/1 1/1 1/- X/- X/X
:: m X/- X/- X/- X/- X/- -/- 0/- 1/- -/- -/-
:: j L/- L/- L/- L/- L/- -/- 0/- -/- 1/- -/-
:: l L/1 L/1 L/1 L/1 L/1 -/0 0/0 -/- -/- 1/1

	for /F "tokens=1-26 delims=," %%a in ("%_AT_ATT%") do for /F "tokens=1-26 delims=," %%A in ("%_AT_ATR%") do (
rem		echo	"%%a%%b%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l%%m%%n%%o%%p%%q%%r%%s%%t%%u%%v%%w%%x%%y%%z"
rem		echo	"%%A%%B%%C%%D%%E%%F%%G%%H%%I%%J%%K%%L%%M%%N%%O%%P%%Q%%R%%S%%T%%U%%V%%W%%X%%Y%%Z"
rem Reset Reparse Points for DIR.
		if %%m%%M%%d==MmD	mountvol "%~1" /D
		if %%j%%J%%d==JjD	fsutil reparsepoint delete "%~1"
		if %%l%%L%%d==LlD	fsutil reparsepoint delete "%~1"
rem Reset General Attr.
		set _AT_ATR=
		set _AT_WRK=
		if %%r==R (
			if %%p%%P%%d%%l==pPdl		set _AT_WRK= -R
			if %%p%%P%%d%%l%%L==pPdLl	set _AT_WRK= -R
rem			if %%p%%P%%d%%l==Ppdl		set _AT_WRK= -R
rem			if %%p%%P%%d%%l%%L==PpdLl	set _AT_WRK= -R
			if %%l%%L%%d==lLd		set _AT_WRK= -R
			if %%l%%L%%d==Lld		set _AT_WRK= -R
		)
		if %%r%%R==Rr	set _AT_WRK= -R
		set _AT_ATR=!_AT_ATR!!_AT_WRK!
		set _AT_WRK=
		if %%h==H (
			if %%p%%P%%d%%l==pPdl		set _AT_WRK= -H
			if %%p%%P%%d%%l%%L==pPdLl	set _AT_WRK= -H
rem			if %%p%%P%%d%%l==Ppdl		set _AT_WRK= -H
rem			if %%p%%P%%d%%l%%L==PpdLl	set _AT_WRK= -H
			if %%l%%L%%d==lLd		set _AT_WRK= -H
			if %%l%%L%%d==Lld		set _AT_WRK= -H
			if %%r%%R==rR	set _AT_WRK= -H
			if %%r%%R==Rr	set _AT_WRK= -H
			if %%s%%S==sS	set _AT_WRK= -H
			if %%s%%S==Ss	set _AT_WRK= -H
			if %%a%%A==aA	set _AT_WRK= -H
			if %%a%%A==Aa	set _AT_WRK= -H
			if %%i%%I==iI	set _AT_WRK= -H
			if %%i%%I==Ii	set _AT_WRK= -H
		)
		if %%h%%H==Hh	set _AT_WRK= -H
		set _AT_ATR=!_AT_ATR!!_AT_WRK!
		set _AT_WRK=
		if %%s==S (
			if %%p%%P%%d%%l==pPdl		set _AT_WRK= -S
			if %%p%%P%%d%%l%%L==pPdLl	set _AT_WRK= -S
rem			if %%p%%P%%d%%l==Ppdl		set _AT_WRK= -S
rem			if %%p%%P%%d%%l%%L==PpdLl	set _AT_WRK= -S
			if %%l%%L%%d==lLd		set _AT_WRK= -S
			if %%l%%L%%d==Lld		set _AT_WRK= -S
			if %%r%%R==rR	set _AT_WRK= -S
			if %%r%%R==Rr	set _AT_WRK= -S
			if %%h%%H==hH	set _AT_WRK= -S
			if %%h%%H==Hh	set _AT_WRK= -S
			if %%a%%A==aA	set _AT_WRK= -S
			if %%a%%A==Aa	set _AT_WRK= -S
			if %%i%%I==iI	set _AT_WRK= -S
			if %%i%%I==Ii	set _AT_WRK= -S
		)
		if %%s%%S==Ss	set _AT_WRK= -S
		set _AT_ATR=!_AT_ATR!!_AT_WRK!
		if %%a%%A==Aa	set _AT_ATR=!_AT_ATR! -A
		if %%i%%I==Ii	set _AT_ATR=!_AT_ATR! -I
		if %%d==D (
			if %%m%%M==MM	set _AT_ATR=
			if %%m%%M==M*	set _AT_ATR=
			if %%j%%J==JJ	set _AT_ATR=
			if %%j%%J==J*	set _AT_ATR=
			if %%l%%L==LL	set _AT_ATR=
			if %%l%%L==L*	set _AT_ATR=
rem			if not "!_AT_ATR!"==""	echo	attrib!_AT_ATR! "%~1"
			if not "!_AT_ATR!"==""		attrib!_AT_ATR! "%~1"
		) else (
rem			if not "!_AT_ATR!"==""	echo	attrib!_AT_ATR! "%~1" /S /D /L
			if not "!_AT_ATR!"==""		attrib!_AT_ATR! "%~1" /S /D /L
		)
rem Reset Special Attr.
		if %%l%%L%%d==Lld (
			fsutil reparsepoint delete "%~1"
			if %%a==a	attrib -A "%~1"
			if %%a%%A==Aa	attrib -A "%~1"
		)
		if %%v%%V==Vv			if .%_AT_VRB%==.1 echo Can't reset V: VIRTUAL
		if %%o%%O==Oo			if .%_AT_VRB%==.1 echo Can't reset O: OFFLINE
		if %%t%%T%%d==Ttd		if .%_AT_VRB%==.1 echo Can't reset T: TEMPORARY
		if %%p%%P%%d%%l==Ppdl		if .%_AT_VRB%==.1 echo Can't reset P: SPARSE FILE
		if %%p%%P%%d%%l%%L==PpdLl	if .%_AT_VRB%==.1 echo Can't reset P: SPARSE FILE
		if %%e%%E==Ee			cipher /D "%~1" > nul
		if %%c%%C%%m%%j%%l==Ccmjl	compact /U /Q "%~1" > nul
		if %%c%%C%%m%%M==CcMm		compact /U /Q "%~1" > nul
		if %%c%%C%%j%%J==CcJj		compact /U /Q "%~1" > nul
		if %%c%%C%%l%%L==CcLl		compact /U /Q "%~1" > nul
rem Set Special Attr.
		if %%c%%C%%m%%j%%l==cCmjl	compact /C /Q "%~1" > nul
		if %%c%%C%%m%%M==cCMm		compact /C /Q "%~1" > nul
		if %%c%%C%%j%%J==cCJj		compact /C /Q "%~1" > nul
		if %%c%%C%%l%%L==cCLl		compact /C /Q "%~1" > nul
		if %%e%%E==eE			cipher /E "%~1" > nul
		if %%p%%P%%d%%l==pPdl		fsutil sparse setflag "%~1" > nul
		if %%p%%P%%d%%l%%L==pPdLl	fsutil sparse setflag "%~1" > nul
		if %%t%%T%%d==tTd		if .%_AT_VRB%==.1 echo Can't set T: TEMPORARY
		if %%o%%O==oO			if .%_AT_VRB%==.1 echo Can't set O: OFFLINE
		if %%v%%V==vV			if .%_AT_VRB%==.1 echo Can't set V: VIRTUAL
		if %%l%%L%%d==lLd		if .%_AT_VRB%==.1 echo Can't set L: Symbolic Link ^(only^)
rem Set General Attr.
		set _AT_ATR=
		set _AT_WRK=
		if %%r==R (
			if %%p%%P%%d%%l==pPdl		set _AT_WRK= +R
			if %%p%%P%%d%%l%%L==pPdLl	set _AT_WRK= +R
rem			if %%p%%P%%d%%l==Ppdl		set _AT_WRK= +R
rem			if %%p%%P%%d%%l%%L==PpdLl	set _AT_WRK= +R
			if %%l%%L%%d==lLd		set _AT_WRK= +R
			if %%l%%L%%d==Lld		set _AT_WRK= +R
		)
		if %%r%%R==Rr	set _AT_WRK=
		if %%r%%R==rR	set _AT_WRK= +R
		set _AT_ATR=!_AT_ATR!!_AT_WRK!
		set _AT_WRK=
		if %%h==H (
			if %%p%%P%%d%%l==pPdl		set _AT_WRK= +H
			if %%p%%P%%d%%l%%L==pPdLl	set _AT_WRK= +H
rem			if %%p%%P%%d%%l==Ppdl		set _AT_WRK= +H
rem			if %%p%%P%%d%%l%%L==PpdLl	set _AT_WRK= +H
			if %%l%%L%%d==lLd		set _AT_WRK= +H
			if %%l%%L%%d==Lld		set _AT_WRK= +H
			if %%r%%R==rR	set _AT_WRK= +H
			if %%r%%R==Rr	set _AT_WRK= +H
			if %%s%%S==sS	set _AT_WRK= +H
			if %%s%%S==Ss	set _AT_WRK= +H
			if %%a%%A==aA	set _AT_WRK= +H
			if %%a%%A==Aa	set _AT_WRK= +H
			if %%i%%I==iI	set _AT_WRK= +H
			if %%i%%I==Ii	set _AT_WRK= +H
		)
		if %%h%%H==Hh	set _AT_WRK=
		if %%h%%H==hH	set _AT_WRK= +H
		set _AT_ATR=!_AT_ATR!!_AT_WRK!
		set _AT_WRK=
		if %%s==S (
			if %%p%%P%%d%%l==pPdl		set _AT_WRK= +S
			if %%p%%P%%d%%l%%L==pPdLl	set _AT_WRK= +S
rem			if %%p%%P%%d%%l==Ppdl		set _AT_WRK= +S
rem			if %%p%%P%%d%%l%%L==PpdLl	set _AT_WRK= +S
			if %%l%%L%%d==lLd		set _AT_WRK= +S
			if %%l%%L%%d==Lld		set _AT_WRK= +S
			if %%r%%R==rR	set _AT_WRK= +S
			if %%r%%R==Rr	set _AT_WRK= +S
			if %%h%%H==hH	set _AT_WRK= +S
			if %%h%%H==Hh	set _AT_WRK= +S
			if %%a%%A==aA	set _AT_WRK= +S
			if %%a%%A==Aa	set _AT_WRK= +S
			if %%i%%I==iI	set _AT_WRK= +S
			if %%i%%I==Ii	set _AT_WRK= +S
		)
		if %%s%%S==Ss	set _AT_WRK=
		if %%s%%S==sS	set _AT_WRK= +S
		set _AT_ATR=!_AT_ATR!!_AT_WRK!
		if %%a%%A==aA	set _AT_ATR=!_AT_ATR! +A
		if %%i%%I==iI	set _AT_ATR=!_AT_ATR! +I
		if %%d==D (
			if %%m%%M==MM	set _AT_ATR=
			if %%m%%M==M*	set _AT_ATR=
			if %%j%%J==JJ	set _AT_ATR=
			if %%j%%J==J*	set _AT_ATR=
			if %%l%%L==LL	set _AT_ATR=
			if %%l%%L==L*	set _AT_ATR=
rem			if not "!_AT_ATR!"==""	echo	attrib!_AT_ATR! "%~1"
			if not "!_AT_ATR!"==""		attrib!_AT_ATR! "%~1"
		) else (
rem			if not "!_AT_ATR!"==""	echo	attrib!_AT_ATR! "%~1" /S /D /L
			if not "!_AT_ATR!"==""		attrib!_AT_ATR! "%~1" /S /D /L
		)
rem Set Reparse Points for DIR.
		if %%l%%L%%d==lLD	if .%_AT_VRB%==.1 echo Can't set L: Symbolic Link ^(only^)
		if %%j%%J%%d==jJD	if .%_AT_VRB%==.1 echo Can't set J: Junction Point
		if %%m%%M%%d==mMD (
			if exist "%~2" (
				mountvol "%~1" %~2
			) else (
				if .%_AT_VRB%==.1 echo Can't set M: Volume Mount Point
			)
		)
	)
	set _AT_ATR=
	goto dispAttr

:abort
	echo.
	echo Aborted: %~n0
:exit
:	echo.
	endlocal
:	pause
:end
/* Copyright: Public Domain (free contents) for the inside of this border. */
/* Everyone can copy, revise and distribute/publish the contents in the inside of this border. */