1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Command line variable in tcstart.btm?

Discussion in 'Support' started by Ville, May 3, 2010.

  1. Ville

    Joined:
    Jul 7, 2008
    Messages:
    35
    Likes Received:
    0
    Is there a way to to get the command line variable "%L" (set when "TCMD Prompt Here" is selected, as defined by tcmdhere.btm) in tcstart.btm?

    I'd like to add some conditional functionality in tcstart.btm based on whether a startup directory was requested or not.

    Thanks!
     
  2. Charles Dye

    Charles Dye Super Moderator
    Staff Member

    Joined:
    May 20, 2008
    Messages:
    3,280
    Likes Received:
    38
    It looks like that parameter is being handed to TCMD.EXE, not TCC.EXE, which makes it kinda difficult.... You can retrieve the command line originally used to start Take Command with something like

    Code:
    echo %@pidcommand[%@pid[tcmd.exe]]
    but that probably won't be useful if you have SingleInstance turned on, and you used "TCMD prompt here" to launch a second instance of Take Command.
     
  3. Ville

    Joined:
    Jul 7, 2008
    Messages:
    35
    Likes Received:
    0
    I don't use SingleInstance (i.e. multiple instances are allowed), so that would work. It does seem to transit the parameters TCMD.EXE was launched with. But when launching a second instance, the parameters from the first instance are still in effect. Can that be avoided so that each instance would have the launch parameters from the associated TCMD.EXE?
     
  4. Charles Dye

    Charles Dye Super Moderator
    Staff Member

    Joined:
    May 20, 2008
    Messages:
    3,280
    Likes Received:
    38
    You might try %@PIDCOMMAND[%_PPID]

    It would be a good idea to check that the first word of the return value does refer to TCMD.EXE, since TCC.EXE can be started by other programs such as Explorer.
     
  5. vefatica

    Joined:
    May 20, 2008
    Messages:
    7,792
    Likes Received:
    29
    I suppose you could also edit the "here" command in the registry ... make it
    something like

    tcmd.exe /t tcc.exe cdd foo

    Then TCC should see the startup command. With "SingleInstance" and an
    already-running TCMD, that might be what you want (a new tab in the named
    place). Without "SingleInstance" you'll get a new instance. Either way, and
    unfortunately, a newly-created TCMD will also have the default tabs.

    Rex, there should be a way to start TCMD for a specific purpose (as with /t
    command) and **not** also get the default tabs (/O(nly) command?).
    --
    - Vince
     
  6. Ville

    Joined:
    Jul 7, 2008
    Messages:
    35
    Likes Received:
    0
    This seems to be working for what I'm looking to do. Basically I want to set prompt to Desktop unless a directory is requested when TCMD is being invoked. Multiple instances are allowed.

    In tcstart.btm I have:

    Code:
    @ECHO OFF
    prompt = $e[30;46;2m[$w]$e[40;36;1m$s[$t$h$h$h]#$e[40;37;2m$s
    alias /R "c:\Users\Ville\My Documents\TCMD\aliases.tcmd"
    
    path %path;%ProgramFiles(x86)\bind\
    
    set startcommand=%@pidcommand[%_PPID]
    set startdir=%@TRIM[%@word[2,%startcommand]]
    
    msgbox ok "startcomand" startcommand is '%startcommand'
    msgbox ok "startdir" startdir is '%startdir'
    
    if %startdir == "" cdd desk:
    cdd /to .
    
    cls
    
    Now this works in all cases except when I'm invoking TCMD from Launchy. It doesn't provide any command line parameters; startdir is empty (''), but still cdd desk: is not called, and since no command line directory is requested, TCC opens in c:\Program Files (x86)\TCMD\

    Any idea why if %startdir == "" cdd desk: fails when startdir is blank, but only when started from Launchy? I tried to check it also with DEFINED, but it didn't help (I suppose it's always set since I use set startdir= ...).

    Contents of startcommand and startdir are identical whether started from the Start menu icon or from Launchy, but the end result is different. :confused:

    I'm using cdd /to . in the end because when the directory is requested (when selecting "TCMD prompt here"), the correct folder is highlighted in the GUI, but it may not be scrolled in the view if the current directory listing is long.
     
  7. vefatica

    Joined:
    May 20, 2008
    Messages:
    7,792
    Likes Received:
    29
    On Tue, 04 May 2010 02:12:19 -0400, Ville <> wrote:

    |Any idea why *if %startdir == "" cdd desk:* fails when startdir is blank,

    You need the quotes:

    *if "%startdir" == ""

    You could also use:

    if defined startdir ...
    --
    - Vince
     
  8. Ville

    Joined:
    Jul 7, 2008
    Messages:
    35
    Likes Received:
    0
    Got it. Thanks so much for your help!
     

Share This Page