0

我正在尝试创建一个快捷方式批处理文件以位于 windows'send to' 菜单中,该菜单将文件发送到相对于文件当前文件路径的位置。

因此,例如,我希望创建一个存档快捷方式以粘贴在 ocntext 菜单中,该菜单将按如下方式移动文件

C:\cheese\stilton.txt > C:\cheese\archive\stilton.txt

或者

C:\biscuits\hobnobs.txt > C:\biscuits\archive\hobnobs.txt

但我不明白如何捕获当前文件路径并将其传递给批处理\快捷方式。

任何人都可以帮忙吗?

4

2 回答 2

1

有趣的是,当使用...

简单地说,move "%1" "%1"\..\archive也有效。;-) 虽然不是一个干净的方式。:-)
还要确保你mkdir "%1"\..\archive在移动之前做。

此外,您可以考虑将其添加到注册表中,而不是发送至;特定于文件类型。
对于文本文件,.reg 文件如下所示:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\txtfile\shell\movefile]
@="Move to archive"
[HKEY_CLASSES_ROOT\txtfile\shell\movefile\command]
@="cmd /c mkdir \"%1\"\\..\\archive & move \"%1\" \"%1\"\\..\\archive "
于 2012-11-23T12:59:29.363 回答
0

在批处理文件中,您可以使用 获取第一个参数%~dp1的路径,或者仅使用 获取路径%~p1。这意味着您需要将完整的文件名与批处理文件的路径一起传递。

要在批处理文件中使用它,例如移动文件,您可以执行以下操作:

@echo off
setlocal enabledelayedexpansion
set fn=%~1
move "!!fn!!" "%~p1archive"

从文件名中%~1删除引号,我只是出于习惯这样做。

%~p1扩展为文件的路径,并附加一个斜杠。

请注意,我没有在这里检查目录是否存在,这应该很简单......在移动之前添加这一行来创建它:

md "%~p1archive"
于 2012-11-23T11:03:24.493 回答