我经常不得不将Windows 10程序或对话框中的文件路径复制到我的R
代码中。由于R
转义了反斜杠,因此我总是必须将反斜杠更改为正斜杠或双反斜杠,所以我试图解决此问题,以便在我复制文本然后使用快捷键的某些特殊组合进行粘贴时,它用双反斜杠代替了我的反斜杠。因此,例如,如果我复制了“ C:\ windows \ system32 \ drivers \ etc”,然后按了Ctrl + Alt + P等组合键(甚至使用了右键单击上下文菜单),我想更改粘贴的内容输出到“ C:\\ windows \\ system32 \\ drivers \\ etc”,而不是复制的内容。我以为我可以在PowerShell中执行以下操作:
$copiedtext = Get-Clipboard;
$copiedtext = -join(-join('"', $copiedtext -replace "\\", '\\'), '"');
Set-Clipboard $copiedtext;
Write-Output $copiedtext | clip
但这只会将剪贴板输出到控制台(如果我为PowerShell程序分配快捷方式并为其分配快捷键,则该按钮将不起作用)。谁能推荐如何修改此设置以实现我想要的功能,还是推荐一些其他语言以使Windows始终将某些字符的快捷键组合识别为我的特殊粘贴操作?如果可能的话,我也不想启动程序就这样做。
答案 0 :(得分:1)
注意:虽然以下方法有效,但它是:
最终,最好还是基于AutHotkey之类的专用工具来寻找解决方案。
$HOME\pasteEscaped.ps1
,其中包含以下内容:# Get text from the clipboard and escape '\' chars. as '\\'
$escapedText = (Get-Clipboard -Format Text) -replace '\\', '\\'
# Helper COM object for sending keystrokes.
$sh = New-Object -ComObject WScript.Shell
# Switch back to the previously active application...
$sh.SendKeys("%{tab}")
Start-Sleep -Milliseconds 100
# ... and send the escaped text. additionally escaped for .SendKeys()
$sh.SendKeys(($escapedText -replace '[{}()+^%]', '{$&}'))
创建快捷方式文件,例如在您的桌面上,具有以下属性:
目标:
powershell.exe -executionpolicy bypass -noprofile -file %USERPROFILE%\pasteEscaped.ps1
运行:Minimized
快捷键:(您选择的快捷键)
此后,当您按快捷键时,将从剪贴板中检索文本,将其中的\
实例加倍,然后使用模拟键盘输入将结果文本粘贴到前景窗口中。