@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. */