有没有办法将当前选定的文件名(包括路径)复制到剪贴板?理想情况下,这将是通过右键单击菜单。
某种程度的灵活性将很有用,例如仅复制文件名,路径+文件名,文件名减去扩展名等功能。但是,这不是必需的,只要它可以复制路径+文件名即可。
该解决方案必须与Windows XP,Windows Vista和Windows 7兼容。
有没有办法将当前选定的文件名(包括路径)复制到剪贴板?理想情况下,这将是通过右键单击菜单。
某种程度的灵活性将很有用,例如仅复制文件名,路径+文件名,文件名减去扩展名等功能。但是,这不是必需的,只要它可以复制路径+文件名即可。
该解决方案必须与Windows XP,Windows Vista和Windows 7兼容。
Answers:
要么
将文件名复制到剪贴板实用程序
Windows XP无法将文件名列表复制到剪贴板(从Vista开始,在更高版本的Windows中已更改此文件)。Microsoft知识库文章建议编写一个小的* .bat文件,该文件运行DIR命令,将其输出收集到一个文件中,打印该文件,然后将其删除。有时这可能很方便,但是能够选择文件列表并将文件名放在剪贴板上会更加有用。然后,您可以将它们粘贴到需要的地方。
所以这是一个实用程序。要安装它,您需要自己做一些工作-但不多做。以下是说明:
在“转到”中创建快捷方式
而已; 您已经安装了它。现在选择一个或多个文件,单击鼠标右键,然后将鼠标指针移到“发送到”。将出现一个子菜单,其中包含您的新命令。选择该命令,您选择的文件列表将以剪贴板的升序排列。
clip.exe
(包含在最新的Windows版本中,以前在资源工具包中提供)在这里可能会更好(如果您在控制台中使用TrueType字体)。
从Vista开始,您只需Shift +右键单击资源管理器中的文件,然后选择“复制为路径”:
这甚至适用于多个文件,每行一个文件放入剪贴板。
在Windows 8中,这在资源管理器功能区中公开:
我使用MS“发送到X” PowerToy作为Windows 95 PowerToys集的一部分(MS下载链接)。
这会在右键单击“发送到”菜单中添加“剪贴板作为名称”(以及“剪贴板作为目录”和其他一些选项)。
最简单的安装方法是使用Zip实用程序解压缩下载的W95powertoy.exe,右键单击“ SENDTOX.INF”,然后选择“安装”。您可以通过在资源管理器中打开“发送到”菜单中的所有不需要的项目。
在Windows XP上可以正常运行-不在Windows 7上运行,但正如Johannes指出的那样,您可以改用'Shift +右键单击'。
我一直在寻找热键解决方案。对我来说,这些是作品:
Windows 7:
Windows 7,Windows Vista,Windows XP:
AutoHotkey脚本,从此处对Ctrl + Shift + C进行了一些修改
^+c::
Clipboard := gst()
if !IsClipEmpty
ClipWait, 0.5, 1
gst() { ; GetSelectedText or FilePath in Windows Explorer by Learning one
IsClipEmpty := (Clipboard = "") ? 1 : 0
if !IsClipEmpty {
ClipboardBackup := ClipboardAll
While !(Clipboard = "") {
Clipboard =
Sleep, 10
}
}
Send, ^c
ClipWait, 0.1
ToReturn := Clipboard, Clipboard := ClipboardBackup
if !IsClipEmpty
ClipWait, 0.5, 1
Return ToReturn
}
突出显示文件后,FreeCommander提供以下3个选项:
如果您认为Windows是免费的,这是我的开源解决方案,也是免费的:)
创建一个批处理文件,例如listfiles.bat
。将以下任一内容放入文件中:
文件名
set mylist=myfilelist.txt
set tempfile=tmp.txt
set diroptions=/a /b
set fullpath=%1
for %%i in (%fullpath%) do set path=%%~dpi
cd %path%
if exist %mylist% del %mylist%
if exist %tempfile% del %tempfile%
dir %diroptions% > "%path%%mylist%"
for /f "usebackq delims=" %%a in ("%mylist%") do (
if not "%%a"=="%mylist%" (
echo %%a >> %tempfile%
)
)
del %mylist%
ren %tempfile% %mylist%
路径和文件名
set mylist=myfileandpathlist.txt
set tempfile=tmp.txt
set diroptions=/a /b /s
set fullpath=%1
for %%i in (%fullpath%) do set path=%%~dpi
cd %path%
if exist %mylist% del %mylist%
if exist %tempfile% del %tempfile%
dir %diroptions% > "%path%%mylist%"
for /f "usebackq delims=" %%a in ("%mylist%") do (
if not "%%a"=="%path%%mylist%" (
echo %%a >> %tempfile%
)
)
del %mylist%
ren %tempfile% %mylist%
现在在C:\Documents and Settings\<username>\SendTo
目录中创建该文件的快捷方式。转到要从中获取文件列表的目录。右键单击任何文件,然后选择Send To -> Shortcut to listfiles.bat
。文件列表将被写入myfilelist.txt
或myfileandpathlist.txt
取决于您的选择。显然,没有什么可以阻止您在SendTo
目录中拥有两个批处理文件的快捷方式。
有关dir
开关的完整列表,请dir /?
在命令行上键入或访问此网站。
这是简单的AutoHotkey脚本,它将所有命令行参数复制到剪贴板(由换行符分隔)。与其他解决方案一样,它可以通过“ 发送到”菜单工作,因此请为其添加快捷方式"%USERPROFILE%\SendTo"
(或者,如果启动时不带参数,它将为您完成此操作)。
要运行它,请粘贴到记事本,然后保存到"%USERPROFILE%\SendTo\CopyToClipboard.ahk"
。另外,您将需要安装AutoHotkey 1.1(直接dl),它是FOSS。
#NoEnv
#NoTrayIcon
#SingleInstance force
If %0%
{
Loop %0% ; For each parameter:
AllArguments .= ( A_Index > 0 ? "`r`n" : "") . %A_Index%
;MsgBox %AllArguments%
Clipboard = %AllArguments%
ToolTip Copied paths: %0%
} Else {
MsgBox 68, %A_ScriptName%, This script copies command line arguments to clipboard. Intended to be used as Send To target`, so shourtcut to one should be in Send To.`n`nCreate the shourtcut?
IfMsgBox Yes
{
EnvGet UserProfile, UserProfile
FileCreateShortcut %A_AhkPath%, %UserProfile%\SendTo\Names to Clipboard.lnk,, %A_ScriptFullPath%, Copies file names (with paths) to clipboard.
}
}
Sleep 1500
我喜欢Stefan Bertels撰写的ClipboardPath。其他大多数工具都将其隐藏在“发送至”子菜单中,我很少使用它。ClipboardPath将其放置在上下文菜单顶部附近,如果您想要完整的网络路径(非常有用),只需在选择“复制路径”之前按住Control键即可。
我编写了一个名为fnamecopy的免费/开源.NET应用程序来完成此操作。这非常简单,没有右键单击集成,您只需将要用作路径的文件/文件夹拖到一个小窗口中,然后选择要用作路径的文件/文件夹即可。它的骨头很裸露,但是可以帮我完成工作。