0

ファイルの現在のファイル パスに関連する場所にファイルを送信する、Windows の [送信先] メニューに配置するショートカットまたはバッチ ファイルを作成しようとしています。

たとえば、次のようにファイルを移動するocntextメニューに貼り付けるアーカイブショートカットを作成しようとしています

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

また

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

しかし、現在のファイル パスを取得してバッチ\ショートカットに渡す方法がわかりません。

誰でも助けることができますか?

4

2 に答える 2

1

おかしなことに、Windows の相対パスは、使用時にファイルとディレクトリを区別しません..

単に、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 に答える