Useful short aliases

Discussion in 'T&T - Aliases' started by nchernoff, Jun 9, 2008.

  1. nchernoff Administrator

    Message Count:
    42
    Migrated From JP Software

    This article is for sharing simple aliases. The syntax is as listed if you issue alias with no parameters, or for importing with alias /R.

    You can indicate the source/authorship of a contribution in a HTML comment next to the listing. Within a subsection, put them in alphabetical order.

    Please share aliases and alias ideas with the world!

    Code:
    Contents
    
        * 1 Examples
              o 1.1 PATH Pollution, Avoiding
              o 1.2 Perl one-liners
        * 2 4NT/TCMD meta-operation
              o 2.1 Reload settings
        * 3 Shortcuts
        * 4 Misc. / Uncategorized
    Examples

    The examples here are illustrative of a general category. The specific alias listed might be of little interest, but rather it is simply one example of a general thing you can do with aliases, or an illustration of a technique.

    PATH Pollution, Avoiding

    If you have a directory that contains one (or a small number) of executables that you will run from the command line, instead of putting that directory in the PATH environment variable, you can make an alias for the command of interest to flesh out the complete path to the file.

    Code:
    zip="%ProgramFiles\zip\zip.exe"
    unzip="%ProgramFiles\zip\unzip.exe"
    

    Perl one-liners

    Code:
    rot13=perl -pe"tr/A-Za-z/N-ZA-Mn-za-m/"
    Simple one-liner -e based Perl scripts can be turned into aliases, as illustrated here.

    4NT/TCMD meta-operation

    This section is for aliases that are for use when manipulating the command shell itself.

    Reload settings


    After tweaking the files containing your aliases or environment variables, easily reload them. That is better than having your change be temporary to that session — change it in the file in the first place.

    Code:
    reload=alias /R "C:\program files\4nt\aliases.lst" %+ set /R "C:\program files\4nt\environment.lst"
    Shortcuts

    Save typing by abbreviating common commands to a single letter:

    Code:
    a=alias
    c=copy
    d=dir
    e=notepad
    l=list
    
    Commands you use very often can be assigned a key of their own. If you precede a key alias with ^E, any text already on the command line when you press the key will be erased. If the command begins with an at-sign, it will not be recorded in your command history. (Some keys will require a NormalKey= or NormalEditKey= .INI directive to disable their default mappings.)

    Code:
    @@f2=^E@echo Errorlevel: %?
    @@f5=^Edir /p /a
    @@f11=^Ecdd -</code>
    @@f12=^E@cls</code>

    Use aliases to abbreviate the names of external commands:

    Code:
    ff="c:\program files\mozilla firefox\firefox.exe"
    iv="c:\program files\irfanview\i_view32.exe"
    o*pera="c:\program files\opera\opera.exe"
    word=winword.exe

    Any often-used option or combination of options for a command is a good candidate for an alias. So is a series of commands which are frequently used together.

    Code:
    kill=taskend /f
    logoff=reboot /l
    nd=md /s %1 && %1\
    shutdown=reboot /p
    tf=dir /[d] /od
    unuse=net use %$ /d
    use=net use
    whoami=echo %userdomain\%username

    In version 8 and later, you can also use directory aliases to abbreviate commonly-used locations. Note that variable expansion is not performed if you read them from a file with ALIAS /R. If you want to use variables or functions in directory aliases, create them using individual ALIAS commands in a batch file.

    Code:
    alias dl:=d:\download
    alias pub:=\\jeeves\public
    alias user:=%userprofile
    alias desk:=%userprofile\desktop
    alias docs:=%userprofile\my documents
    alias shell:=%@path[%_cmdspec]
    alias win:=%systemroot
    alias sys:=%systemroot\system32
    Misc. / Uncategorized

    • Clonelink - Create a duplicate link (junction) to the current directory in the current directory (a loop). The new link must be moved elsewhere, e.g., with Windows Explorer. See Hard links for potential uses. The name of the link is the current directory preceded by a minus.

      Code:
      alias clonelink=`mklnk "%_cwd" %@quote[-%@name[%_cwp]]`
    • Math - Performs the math in the command line and displays the result.

      Code:
      alias math=`Echo %@eval[%&]`
    • Rensel (Rename + Select) - Adds a prefix to the selected file names.

      Code:
      alias rensel=`rename %@quote[%1] %@quote[%2%1]`
    • Syntax: select rensel (*.wmv) "Summer 2007 Vacation - " Note the optional space between the end hyphen and end double-quote mark. (Adding a suffix would be a lot more complicated because you have to remove the extension, add the suffix and then add back the extension.)
    • TDRV - Create temporary drive
    noahcoad likes this.
  2. AnrDaemon

    Message Count:
    6
    To avoid %PATH% pollution, all you need to do is to create an entry in the registry, under "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"

    Example:
    Code:
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\rar.exe" /ve /d "%[ProgramFiles]\WinRAR\rar.exe" /f
    Will create
    Now, TC* can find it anywhere any time. Many other programs, too. While alias' application is limited to TC* only.

    Well, back to topic.

    Now, really useful aliases:

    Code:
    #!=rem
    Even if it looks silly, it coming truly useful when you are interoperating with CygWin/MSYS and want TC* script to be launched from bash script.

    Code:
    done=iff %_TRANSIENT == 0 .and. %_BATCH == 1 then %+ exit %1 %+ else %+ quit %1 %+ endiff
    The issue is, if you call "exit" from a nested batch file, you'll kill a whole stack, which is not a desired behavior in many situations.
    Using this alias in place of "exit/quit", you'll not interrupt your execution chain accidentally.

    And common consideration to keep in mind, when you are writing aliases - always, and I mean, always use fully qualified definitions.
    %+ instead of whatever command separator you're using.
    %= for escape character.
    %[name] for variable reference. Could also save you from unintended name concatenation.
    noahcoad likes this.
  3. w_krieger

    Message Count:
    57
    For the most part, i use hacks of 'write.exe', using a different name in registry, with different scripts in the file.

    This is apppath.cmd, all of these commands are embedded in a version of write.exe, with different icon, and different call command. Write calls a new gui window to launch the required app, getting the info from the regkey below.

    Most of the favs are done by editing this file. For example, when time comes to update tcmd to v12, the only thing that will be done after install, is to point the command as v12.

    Note here that the virtual command is not the actual app. This is because if you rename write.exe to wordpad.exe (which it launches), then it will go into a loop. On the other hand, the names selected here are taken because they are not commands in current use, and you can use a pathed 'tcmd.exe' to load tcmd.exe

    v8.01 is still current because it is the last version that runs in win2000, the main boot os.

    Code:
    @echo off
    set rkey=SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
    :: change this on each install
    set rsave=%systemdrive%\save
    set rdir=%rsave%\newin
    
    
    :: 4nt + tcmd 8
    reg add "HKLM\%rkey%\4ntu.exe" /f /ve /d %rdir%\jpsoft\4nt.exe
    reg add "HKLM\%rkey%\tcmdu.exe" /f /ve /d %rdir%\jpsoft\tcmd.exe
    reg add "HKLM\%rkey%\tciu.exe" /f /ve /d %rdir%\jpsoft\tcii.exe
    reg add "HKLM\%rkey%\tcx.exe" /f /ve /d %rdir%\tcmd11\tcc.exe
    reg add "HKLM\%rkey%\tcmdxp.exe" /f /ve /d %rdir%\tcmd11\tcmd.exe
    
    :: boxer
    reg add "HKLM\%rkey%\boxer32.exe" /f /ve /d %rdir%\boxer\b.exe
    
    :: iview32
    reg add "HKLM\%rkey%\i_view32.exe" /f /ve /d %rdir%\irfanview\i_view32.exe
    
    :: total commander
    reg add "HKLM\%rkey%\totalcmd.exe" /f /ve /d %rdir%\ghisler\totalcmd.exe
    
    :: ztw
    reg add "HKLM\%rkey%\ztwin.exe" /f /ve /d %rdir%\ztree\ztw.exe
    
    :: winassoc
    reg add "HKLM\%rkey%\wassociate.exe" /f /ve /d %rdir%\wassoc\wassociate.exe
    
    :: winimage
    reg add "HKLM\%rkey%\winimage32.exe" /f /ve /d %rdir%\winimage\winimage.exe
    
    :: winzip (aka 7zfm) H:\PROGRAM\K7-Zip\7zFM.exe
    reg add "HKLM\%rkey%\winzip.exe" /f /ve /d "%ProgramFiles%\7-Zip\7zfm.exe"
    reg add "HKLM\%rkey%\winzip32.exe" /f /ve /d "%ProgramFiles%\7-Zip\7zfm.exe"
    
  4. Dmitry L. Kobyakov

    Message Count:
    5
    alias cdtc=`cdd "%_tcfolder"`
    When executed in a tab of a TCMD window sets the current folder of the tab's tcc process to what is seen in the folder file list pane.
  5. mfarah

    Message Count:
    103
    Here go some of mine:

    A colorful version of cd, for all drives (inspired by Unix's pwd, actually):

    Code:
    [COLOR=Blue]pwd=for %A in (%_ready) do ( echo ^e[%COLORES_DE_DISCOS[%@eval[%@ascii[%@instr[0,1,%A]]-65]]m%@format[-12,%@label[%A]] %@cwds[%A]^e[0m )[/COLOR]


    COLORES_DE_DISCOS is an array defined in tcstart.btm:

    Code:
    [SIZE=1]unsetarray /Q COLORES_DE_DISCOS
    setarray COLORES_DE_DISCOS[26]
    set COLORES_DE_DISCOS[0]=37;2
    set COLORES_DE_DISCOS[1]=32;1
    set COLORES_DE_DISCOS[2]=32;2
    set COLORES_DE_DISCOS[3]=33;2
    set COLORES_DE_DISCOS[4]=32;1
    set COLORES_DE_DISCOS[5]=36;2
    set COLORES_DE_DISCOS[6]=36;1
    set COLORES_DE_DISCOS[7]=36;1
    set COLORES_DE_DISCOS[8]=36;1
    set COLORES_DE_DISCOS[9]=36;1
    set COLORES_DE_DISCOS[10]=37;2
    set COLORES_DE_DISCOS[11]=37;2
    set COLORES_DE_DISCOS[12]=33;1
    set COLORES_DE_DISCOS[13]=31;1
    set COLORES_DE_DISCOS[14]=37;2
    set COLORES_DE_DISCOS[15]=35;1
    set COLORES_DE_DISCOS[16]=37;2
    set COLORES_DE_DISCOS[17]=31;1
    set COLORES_DE_DISCOS[18]=31;1
    set COLORES_DE_DISCOS[19]=37;2
    set COLORES_DE_DISCOS[20]=37;2
    set COLORES_DE_DISCOS[21]=37;2
    set COLORES_DE_DISCOS[22]=37;2
    set COLORES_DE_DISCOS[23]=37;2
    set COLORES_DE_DISCOS[24]=37;2
    set COLORES_DE_DISCOS[25]=37;2
    rem Significado de cada color.
    rem
    rem Intensidad normal: discos no removibles. Intensidad alta (brillante): discos removibles.
    rem
    rem Verde: partición principal de cada disco duro interno.
    rem Amarillo (no brillante): discos sustituidos.
    rem Cian: particiones secundarias de cada disco duro interno.
    rem Blanco: discos sin significado especial.
    rem
    rem Rojo brillante: CD-ROMs.
    rem Verde brillante: pendrives.
    rem Amarillo brillante: discos externos (el de 1TB, etc.).
    rem Violeta brillante: discos externos cuestionados (mi passport).
    rem Cian brillante: tarjetas SD, CF, etcétera.
    rem
    rem DISPONIBLE: negro brillante, azul brillante (ÚLTIMA opción), magenta (penúltima opción) y blanco brillante.
    rem NO USAR: negro, rojo y azul.
    [/SIZE] 
    (I should translate that comment block into english.)

    An extended version of free, for all ready drives:

    Code:
    [COLOR=Blue]freee=for %A in (%_ready) do if "%A" eq "%@left[2,%@truename[%A]]" (free %A)[/COLOR]


    (some of you will remember it from this thread: http://jpsoft.com/forums/showthread.php?t=2556 )

    A convenient shorthand:

    Code:
    [COLOR=Blue]..*....................=`cd %0`[/COLOR]
    (this one has been in my alias.txt for so many years, I can't remember where it came from - I *think* it wasn't my invention)

    Permanent settings for some commands:

    Code:
    [COLOR=Blue]move=*move /R
    select=*select /H/Ou
    say=*say /A[/COLOR]



    I have more aliases, but they're all instances of stuff nchernoff has already mentioned (path pollution avoidance, shortcuts, etc.).
  6. David Marcus

    Message Count:
    540
    What does this do?

    What is "say"?
  7. mfarah

    Message Count:
    103
    .. == cd ..
    ... == cd ..\..
    .... == cd ..\..\..
    ..... == cd ..\..\..\..

    (and so on)



    say /? returns "Speaks the specified text." :)

    The /A option makes TCC execute it asynchronically.
  8. Steve Fabian

    Message Count:
    2,714
    ----- Original Message -----
    From: mfarah
    To: ESFabian@zenge.org
    Sent: Thursday, 2011. March 10. 18:00
    Subject: RE: [T&T - Aliases-t-172] Re: Useful short aliases
    Quote:
    Originally Posted by David Marcus
    What is "say"?

    say /? returns "Speaks the specified text." :)

    The /A option makes TCC execute it asynchronically.
    --- end quote ---

    SAY.DLL is a plugin from Charles Dye. Beware! Do not issue the command "help
    say" - it keeps on saying the HELP until it is finished...
    --
    Steve
  9. Charles Dye Super Moderator

    Message Count:
    2,137


    I used something similar for years, dating back to 4DOS, but took it out of my aliases list two or three major versions back. It's no longer needed. Recent versions of TCC will treat a directory name as an implied CDD even if it doesn't end with a trailing backslash.

  10. Charles Dye Super Moderator

    Message Count:
    2,137
    Undocumented feature:

    Code:
    help say & delay 2 & say /k
    
    Only useful for asynchronous speech, which that online help text is.
  11. Steve Fabian

    Message Count:
    2,714
    ----- Original Message -----
    From: Charles Dye

    Undocumented feature:

    Code:
    help say & delay 2 & say /k
    Only useful for asynchronous speech, which that online help text is.
    ----- End Original Message -----

    Well, nobody expects "help say" to start speaking! It is contrary to the
    documentation of the HELP command. In fact I did not recall whence SAY came,
    so I just issued HELP SAY, and had to press my mute button to be able to
    think. Only after that did I use the TCC internal WHICH command to determine
    where the command is implemented.

    The "quick help" of the command is really full help (except the /K option is
    not included); that's what I expected to see. I think a better idea would be
    to use piping to do the same:
    help say | say
    (which is a little verbose but makes the intent clear).
    --
    Steve
  12. Charles Dye Super Moderator

    Message Count:
    2,137
    Originally it was just a message box, but then I had the idea that in this particular case it might make sense to consider the needs of the visually impaired.

    Anybody else have an opinion? Especially anyone who has difficulty reading screen text? It'd be trivial to change it back to a popup.
  13. mfarah

    Message Count:
    103
    I should have mentioned it's a plugin. I forgot that, since tend to consider the plugins I use as part of TCC.
  14. mfarah

    Message Count:
    103
    You're right! I just commented it out from my aliases file.

    Thanks.
  15. mfarah

    Message Count:
    103
    Hey, that's nice! Should *be* documented...
  16. Steve Pitts

    Message Count:
    133
    A handful of favourites that might have a general application:
    Code:
    tohex=echo %@convert[10,16,%1]
    fromhex=echo %@convert[16,10,%1]
    calc=echo %@eval[%$]
    indir=pushd %1 %+ %2$ %+ popd
    trace=setdos /y1 %+ %&
    howlong=timer on %+ %$ %+ timer
    ele*vate=*start /elevated
    The latter has considerably reduced my frustration with running as a normal user under Windows 7 with UAC set to the second 'highest' level, and even has the neat side effect that issuing an elevate on its own starts a new TCC prompt elevated.
  17. WavSlave

    Message Count:
    25
    On 2011-04-22 07:33, Steve Pitts wrote:

    trace=setdos /y1 %+ %&



    This SETDOS setting is no longer supported. I used to use an
    identical alias under 4DOS but had to change it to call BDEBUGGER
    when TCC became the norm.
  18. Steve Pitts

    Message Count:
    133
    Well spotted that man. I can't even claim that it is in the version that I'm used to using (v7) because it seems to have disappeared from there too.
  19. Danny

    Message Count:
    10
    Just out of curiosity, what is the purpose of the * in ele*vate? I added the alias as typed, and it appears that the alias can be invoked by either elevate or ele*vate.

    Thanks,
    Danny
  20. Charles Dye Super Moderator

    Message Count:
    2,137
    It can also be invoked as ELE, or ELEV, or....

Share This Page