将路径列表转换为文件名列表

时间:2015-04-24 01:28:39

标签: windows string batch-file filenames

背景

我发现自己经常将文件路径复制到剪贴板,这在Windows资源管理器中有些麻烦。

所以我写了一个小JObject.Parse()文件放到.bat文件夹中,利用CLIP executable将所选文件路径列表复制到剪贴板。该文件只包含一行:

%APPDATA%\Microsoft\Windows\SendTo\

哪个工作得很好,我可以在资源管理器中选择一个或多个文件名,右键单击它们并“发送到”echo|set /p= "%*" | clip.exe 文件,将其复制到剪贴板。每个文件路径都是完整的,并用空格字符与其他文件路径分开。

问题

有时,我不想复制完整文件路径的列表,但更愿意只列出包含扩展名的文件名列表。我知道如何使用herehere所述的.bat语法对单个文件路径进行转换。

我尝试了不同的组合,但似乎无法为我的列表路径找到可行的解决方案。以下代码%~nx是正确的文件名:

echo

...但是我如何将它们组合起来传递给for %%F in (%*) do echo %%~nxF ?我是否必须进行字符串连接?也许在CLIP的子程序中,还是有更优雅的解决方案?

2 个答案:

答案 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