Archive for the ‘Software’ Category

How to safely remove USB flash drive with Far Manager

Monday, May 10th, 2010

Do you have one of these:
USB flash drive
When you finish copying files from and to your USB flash drive you need to safely remove it, otherwise you risk losing data. Normally you do this by clicking icon with green arrow in system tray:

You can do the same with Far Manager. Open drive menu (Alt+F1 or Alt+F2), select your flash drive and press Shift+Del. You should get this confirmation:

Select “Remove” and you’re done. Note that the key combo (Shift+Del) is different from ejecting CD/DVD (Del).

Enhancement to launching PowerShell scripts from Far Manager

Friday, March 26th, 2010

The method of launching PowerShell scripts from Far Manager I have described previously has 2 important drawbacks:

  1. You can’t pass arguments to the script, and
  2. You can’t launch script in a separate window

Here’s how to fix this:

  1. Start regedit, open HKCR\Microsoft.PowerShellScript.1\shell\Open\command key
  2. Set it to
    "C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe" "-file" "%1" %*

Now you can press Shift+Enter to start PowerShell script in a new window.

As a bonus, you can now double-click .ps1 files in Windows Explorer to launch them. Why is this not a default behaviour? Most likely Microsoft decided to be extra cautious here.

Make sure you have Powershell version 2.0 or higher for this to work. How to check Powershell version.

How to redirect output of console program to a file in PowerShell

Friday, March 5th, 2010

At some stage I decided I need backup plan for my virtual server. After some intensive web surfing I found brilliant command line tool – s3.exe. The next step was to schedule to run it periodically, every night, when everybody is sleeping.

Night

I decided to use PowerShell. It’s new, it’s powerful, it comes pre-installed with Windows Server 2008. PowerShell is very popular among system administrators.

Also, I got an idea to save output of backup application to log file so that I could see results later. And this is where things didn’t work as I expected. Here’s how to redirect console program output to a file:

s3.exe > log.txt

If you run this you will be surprised to find that log.txt is empty. As it turns out s3.exe, being a good Windows citizen, writes errors to STDERR stream. To redirect error output to the same file you need to add magic string 2>&1:

s3.exe 2>&1 > log.txt

Two new problems appear. First, errors appear as exceptions in log file:

s3.exe : s3.exe version 1.6 - check for updates at http://s3.codeplex.com
At PS Logging.ps1:4 char:43
+ s3.exe <<<<  2>&1 > log.txt
    + CategoryInfo          : NotSpecified: (s3.exe version ...s3.codeplex.com
   :String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

PowerShell helpfully wraps STDERR output into exceptions. This is nice but I don’t need it! All I want is to see how a program worked by examining log file. Do this to unwrap exceptions and show plain text:

s3.exe 2>&1 | foreach-object {$_.ToString()} | Out-File log.txt

And second, errors are out of order with normal output. They could appear before or after normal lines emitted by a program, making it hard to diagnose problem. To confirm that, I created a simple console program:

static void Main(string[] args)
{
   for (int i = 0; i < 10; i++)
   {
      Console.WriteLine("Hello");
   }
   Console.Error.WriteLine("Bah bah");
   for (int i = 0; i < 10; i++)
   {
      Console.WriteLine("2");
   }
}

If you run this program from PowerShell and redirect output to a file, error message (bah bah) could appear anywhere in the log file:

Hello
Bah bah
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
2
2
2
2
2
2
2
2
2
2

The solution I came up with is to let old reliable cmd.exe to do the work:

cmd /c s3.exe `>log.txt 2`>`&1

Note backsticks – I use them to prevent PowerShell from parsing redirect operators.

Links

PowerShell ABC's - O is for Output
How to capture exe output to a PowerShell variable
Another approach to unwrap exceptions: use add-content cmdlet.

How to open .docx and .xlsx files from Far Manager

Friday, January 8th, 2010

If you try to open Office 2007 document (.docx or .xlsx) in Far Manager it will simply open them as a ZIP archive. Clearly, that’s not what you want. Here’s how to fix it:

  1. Go to Commands › File association.
  2. Create a new association by pressing Ins.
  3. Enter *.doc;*.docx;*.xlsx;*.pptx as a mask.
  4. Enter @"!.!" as Execute command (used for Enter).

File associations in Far Manager

You can still open docx file as an archive by pressing Ctrl+PgDn.

Trick: eject CD/DVD from Far Manager

Tuesday, January 5th, 2010

This is a nice trick: in Far Manager, invoke drive menu by pressing Alt+F1:

far-drive-menu

Select CD-ROM and press Delete. CD/DVD will get ejected.

You can also press Del key on network drives to unmap them.

Middle-click in Far Manager 2

Thursday, December 17th, 2009

In Far Manager 1.70 you could browse folders with mouse wheel. Rotating wheel would scroll up and down. Middle-click would open a folder. But version 2.0 disables middle-click. Boo! Never take away features from users.

Mouse wheel

Fortunately it’s very easy to restore this functionality:

  1. Launch [C:\Program Files\Far2\Addons\Macros\MiddleClickAsEnter.reg]. If you don’t have this folder re-install Far and add Addons » Macros feature.
  2. Restart Far Manager.

How to change Far Manager’s font and window size

Tuesday, December 15th, 2009

Freshly installed Far Manager looks um… small:

Here’s how to make its window bigger:

  1. Right-click on the window title, select Properties
  2. Switch to Font tab
  3. Select a bigger font. I prefer raster font 10 x 18.
  4. (optional) Switch to Layout tab and change window size there. I leave it as 80 x 25.

How to add context menu to Far Manager

Thursday, December 10th, 2009

Sometimes I need to do something with file that Far Manager can’t help me with. Good example is changing file permissions. In these cases Windows Explorer context menu comes handy:

far-context-menu

If you want context menu in Far Manager you need EMenu plugin. Fortunately, it is included with Far by default. Here’s how to set it up:

  1. Execute [C:\Program Files\Far\Plugins\EMenu\Hotkey.reg]
  2. Restart Far Manager
  3. Open Options menu, then Plugins configuration. Select EMenu in the list.
  4. Uncheck “Show message after execution”.

Now Menu key should invoke context menu. Nice trick is to select Send To – Mail Recipient to quickly open new email with the file attached.

How to run PowerShell scripts from Far Manager

Wednesday, August 5th, 2009

Let’s say you use Far Manager and want to launch PowerShell script. With default installation pressing Enter on PowerShell script in Far Manager will open the script in Notepad. Not very helpful.

Here’s how to configure Far Manager to launch PowerShell script by pressing Enter key:

  1. Open Commands menu, select File associations.
  2. Press Ins key to add new association.
  3. Enter *.ps1 as file mask.
  4. Enter the following as execute command:
    powershell.exe "&'.\!.!'"

Bonus: how to change colour of PowerShell scripts to green:

  1. Open Options menu, select Files highlighting.
  2. Locate *.exe,*.com,*.bat entry, press Enter to edit.
  3. Add *.ps1 to the list, select Ok to save.

See also: Running Windows PowerShell Scripts

Update: there is an enhancement that allows passing arguments to the script and launch script in a separate window.

How to enable links in Windows Messenger 5.1

Monday, March 17th, 2008

I use classic Windows Messenger. The latest Windows Live Messenger (version 2008) is way too fancy for me. Compare:

I don’t like anything moving on the screen and I don’t like screen space to be wasted.

The only problem with classic Windows Messenger 5.1 (you can download it here) is that links are non-clickable. They are blue, when you type them (http://www.google.com) but they become black in the main chat window:

messenger-no-links.gif

To fix this problem, open regedit and create HKLM\Software\Policies\Microsoft\Messenger\Client key (it might be already there). Create DWORD value EnableURL under that key. Set it to 1. Restart Windows Messenger.