Windows批处理脚本:使用ECHO将所选文件列表保存到新文本文件

时间:2016-06-02 06:59:46

标签: windows batch-file cmd explorer

我已经提供了下面的所有细节和代码,但问题只出在最后一行。

背景

我正在创建一个名为GetSelectedFiles.cmd的脚本,其快捷方式已添加到Windows' "发送至"上下文菜单。例如,通过将上述文件的快捷方式复制到位置:c:\users\user\AppData\Roaming\Microsoft\Windows\SendTo

目的:

该脚本文件的目标是在用户进入上下文菜单并选择Send To>时获取所选文件名列表。 GetSelectedFiles.cmd。

要求:

1) The the selected file names will be separated by new lines.
2) The list will only contain the bare file name and extension (no path).
3) The list will be a saved inside the same directory as selected files.
4) The list will will be saved in a file whose file name matches the first selected file and has extension of `.selection`.

示例:

假设您在目录c:\users\u\中。假设此目录包含名为:w.txt,x.txt,y.txt,z.txt以及其他一些文件的文件。

用户选择以上命名的4个文件,右键单击并发送到> GetSelectedFiles.cmd。

完成上述步骤后,目录应该有一个名为w.selection的新文件,它应包含以下行

w.txt
x.txt
y.txt
z.txt

这是一项基本任务,但是,我遇到问题的是最后一行,特别是%firstFile%只返回空。我错过了什么?

::::::::::::::::::::::::::::::::::::
:::: Here is the complete code :::::
setlocal EnableDelayedExpansion

:: For new line const
set LF=^



for %%A in (%*) do (
IF NOT DEFINED firstFile  (SET firstFile=%%~nxA)

::: This last line is the problem!
echo %%~nxA ^%LF% >> %%~dpA%firstFile%.selection
)

0 个答案:

没有答案