我已经提供了下面的所有细节和代码,但问题只出在最后一行。
背景
我正在创建一个名为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
)