批处理生成几乎任何字符,包括Tab
OneofmyearlypostsonDosTipswasa:chrroutinethatcouldconvertanumberintothecorrespondingcharacter.Thefinalcodethatappearsneartheendofthethreadworksreallywell,andisfast,butnearlyallthecharactersmustbeembeddedinthescript.TheTABcharacterinparticularcanbeproblematic,especiallywhentryingtopostthecodeonaforumsite.
Thereistheundocumented%=ExitCodeAscii%dynamicvariablethatconvertsthemostrecenterrorcode(fromEXIT,notEXIT/B),butitislimitedtocodesbetween32and126.
IhadneverseenanativemethodtogenerateaTABcharacterthatworksonallWindowsversions-untilnow
IrecentlyranacrossthisFORFILESdocumentationgematSS64.COM:
Toincludespecialcharactersinthecommandline,usethehexcodeforthecharacterin0xHHformat(ex.0x09istheTABcharacter,0x22isthedoublequote"character.)
Eureeka:idea:-ThefollowingsimpleprintHexroutinecangenerateanybytecodevalueexcept0x00(nul),0x0A(newline),and0x0D(carriagereturn).8)
@echooff setlocal ::DefineaLinefeedvariable setLF=^ ::above2blanklinesarecritical-donotremove. ::CreateaTABvariable call:hexprint"0x09"TAB ::PrintastringwithencodedTABs call:hexprint"A0x09B0x09C" ::CreateastringvariablewithencodedTABs call:hexprint"A0x09B0x09C"var setvar exit/b :hexPrintstring[rtnVar] for/feol^=^%LF%%LF%^delims^=%%Ain( 'forfiles/p"%~dp0."/m"%~nx0"/c"cmd/cecho(%~1"' )doif"%~2"neq""(set%~2=%%A)elseecho(%%A exit/b
I'llbeplayingNativeAmericanstyleflutesataretreatintheBlueRidgeMountainsofVirginiaforthenext4days:D,withoutcomputeraccess:|
IwantedtopostthisbeforeIleft.
Enjoythecode,whileIenjoythecrispfallair.:)
DaveBenham