2
2
I'm using a slightly modified version of the technique given in this answer to create a context menu item in Windows' file explorer that allows me to run a PowerShell script against specific folders.
The command looks like:
cmd /K PowerShell "C:\PowerShellScript\folder_script.ps1 \"%1\" | clip"
This works fine except when the folder has an ampersand (&) in its name. Then I get the following error (target folder was named Testing & Testing
):
The string starting:
At line:1 char:37
+ C:\PowerShellScript\folder_script.ps1 <<<< "E:\tmp\Testing
is missing the terminator: ".
At line:1 char:53
+ E:\Dropbox\PowerShell\namefixer.ps1 "E:\tmp\Testing <<<<
+ CategoryInfo : ParserError: (E:\tmp\Testing :String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
Clearly something is interpreting the ampersand as a special character but I'm at a loss as how to fix this. Eliminating the ampersand from the folder name is not a viable solution for me.
A solution that doesn't involve a batch script would be preferred.
I'm using Windows 7 Enterprise (64-bit) with PowerShell 2.
No, ps_arg's value will not include the ampersand or anything after it. – Kris – 2013-11-29T10:50:39.280
Try
set ps_arg="%~1"
– Maximus – 2013-11-29T16:31:53.387Yes, that will work but you'll wind up with a string containing the quotes in the ps script. Need to remove them before using the input. – Kris – 2013-12-05T12:46:18.303