背景
我发现自己经常将文件路径复制到剪贴板,这在Windows资源管理器中有些麻烦。
所以我写了一个小JObject.Parse()
文件放到.bat
文件夹中,利用CLIP
executable将所选文件路径列表复制到剪贴板。该文件只包含一行:
%APPDATA%\Microsoft\Windows\SendTo\
哪个工作得很好,我可以在资源管理器中选择一个或多个文件名,右键单击它们并“发送到”echo|set /p= "%*" | clip.exe
文件,将其复制到剪贴板。每个文件路径都是完整的,并用空格字符与其他文件路径分开。
问题
有时,我不想复制完整文件路径的列表,但更愿意只列出包含扩展名的文件名列表。我知道如何使用here或here所述的.bat
语法对单个文件路径进行转换。
我尝试了不同的组合,但似乎无法为我的列表路径找到可行的解决方案。以下代码%~nx
是正确的文件名:
echo
...但是我如何将它们组合起来传递给for %%F in (%*) do echo %%~nxF
?我是否必须进行字符串连接?也许在CLIP
的子程序中,还是有更优雅的解决方案?
答案 0 :(得分:1)
以下内容将每个文件名放在剪贴板中的单独一行:
@(for %%F in (%*) do @echo %%~nxF)|clip
如果您愿意,以下内容将在一行中放置以空格分隔的文件名列表,并在每个文件名周围加上引号。
@(for %%F in (%*) do @<nul set /p =""%%~nxF" ")|clip
答案 1 :(得分:0)
你不能:
echo|set /p= "%~nx*" | clip.exe