4NT Shell Tips and Pitfalls

From miki
Jump to navigation Jump to search

Frequent Mistakes

REM ===============================================================================================================================
REM 4NT BATCH FILES FREQUENT MISTAKES
REM ===============================================================================================================================

goto :EOF& REM to avoid execution of this example file...

REM -------------------------------------------------------------------------------------------------------------------------------

REM WRONG - @attrib match only files that have all attribute listed
echo %@attrib["My File",a]%
REM ... '1' if ONLY Archive bit is set

REM GOOD - Use p as 3rd param to make partial match
echo %@attrib["My File",a,p]%
REM ... '1' if Archive bit is set

REM -------------------------------------------------------------------------------------------------------------------------------

REM WRONG - %1 might contain space, but @attrib requires LFN with space to be surrounded with quote
echo %@attrib[%1,a,]%

REM GOOD - Use "%@full[%1]%" to force quote
echo %@attrib["%@full[%1]%",a,]%

REM -------------------------------------------------------------------------------------------------------------------------------

REM in 4NT, for /r skip SYSTEM / HIDDEN files/directories (in W2K, only HIDDEN files are skipped).
for /r "." %%i in (*.*) do echo %%i

Hints and Tips

REM ===============================================================================================================================
REM 4NT BATCH FILES TIPS AND TRICKS
REM ===============================================================================================================================

goto :EOF& REM to avoid execution of this example file...

REM -------------------------------------------------------------------------------------------------------------------------------

REM To force a batch file to run with 4NT:

if "%@eval[2+2]%" equ "4" goto :4NTSHELL
4NT /c %0 %*
goto :EOF

:4NTSHELL

REM To force a single command to run with 4NT

set FNT=
if "%@eval[2+2]%" neq "4" set FNT=4NT /c
%FNT% *dir /a:a /sfn %*
pause