Windows 使用快捷方式或批处理文件将文件移动到相对位置

Windows 使用快捷方式或批处理文件将文件移动到相对位置,windows,batch-file,shortcut,Windows,Batch File,Shortcut,我正在尝试创建一个shortcutor批处理文件,该文件位于windows“发送到”菜单中,该菜单将文件发送到相对于文件当前文件路径的位置 例如,我想创建一个存档快捷方式,以粘贴在ocntext菜单中,该菜单将按如下方式移动文件 C:\cheese\stilton.txt > C:\cheese\archive\stilton.txt 或 但我不知道如何捕获当前文件路径并将其传递给batch\快捷方式 有人能帮忙吗?在批处理文件中,您可以使用%~dp1获取第一个参数的路径,或者仅使用%~

我正在尝试创建一个shortcutor批处理文件,该文件位于windows“发送到”菜单中,该菜单将文件发送到相对于文件当前文件路径的位置

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

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

但我不知道如何捕获当前文件路径并将其传递给batch\快捷方式


有人能帮忙吗?

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

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

@echo off
setlocal enabledelayedexpansion
set fn=%~1
move "!!fn!!" "%~p1archive"
%~1
从文件名中删除引号,我只是出于习惯这样做

%~p1
扩展到文件路径,并附加斜杠

注意,我没有在这里检查目录是否存在,这应该足够简单。。。在移动之前添加此行以创建它:

md "%~p1archive"

有趣的是,当使用
时,windows相对路径不会区分文件和目录。

简单地说,
移动“%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 "

好的,我使用的是“move%1”%~dp1\u ARCHIVE\%~nx1”,这可以稍微精细一些,但只针对单个文件。我真的需要能够一次将多个文件发送到一个位置以提高效率-我假设这将依次在每个文件上运行,但只需要第一个文件,然后停止。我如何适应从“发送到”菜单一次在多个文件上使用?这里不需要延迟扩展,而且您正在使用2
,而不是一个。它应该类似于移动“%fn%”%~p1archive“
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 "