PowerShell-HashCopy icon indicating copy to clipboard operation
PowerShell-HashCopy copied to clipboard

Fail to copy for filename containing square brackets '[ ]'

Open cho-uc opened this issue 1 year ago • 3 comments

Copying files with filename containing squarebracket "[ ]" will fail

Example:

  • Myfilename[123].txt -> fail, file is corrupted, but no error message
  • Myfailname].txt -> success
  • Myfailname[.txt -> fail with attached error message

Windows version : Windows 10 Version 22H2 PSVersion : 5.1.19041.5007

Command: Copy-FileHash -Path .\Source\ -Destination .\Destination\ -Recurse -PassThru -Verbose

Error

cho-uc avatar Oct 27 '24 10:10 cho-uc

This is because the -Path parameter interprets square brackets as special characters. Other PowerShell cmdlets that handle paths do the same.

To have the square brackets treated literally, use the -LiteralPath parameter instead of -Path.

markwragg avatar Oct 27 '24 15:10 markwragg

Hello,

Thank you for the quick reply. I replaced the command with -LiteralPath but the issue persisted. Copy-FileHash -LiteralPath .\Source\ -Destination .\Destination\ -Recurse -PassThru -Verbose

The file Myfilename[123].txt is inside Source folder. Is the command above correct?

cho-uc avatar Oct 27 '24 21:10 cho-uc

I see the problem. The -LiteralPath parameter only applies to the source path, it doesn't use LiteralPath when retrieving the files in the source folder (or on the destination at all as it happens).

I can fix this, but it will need a code change.

markwragg avatar Oct 28 '24 07:10 markwragg