Win7の右クリックメニューから実行するバッチファイルを作成しました。フォルダを右クリックすると、バッチファイルですべてのファイル(フォルダを除く)を1つ上のディレクトリに移動したいと思います。私はこれまでにこれを持っています:
PUSHHD %1
MOVE "%1\*.*" ..\
これは、ファイルの移動元のフォルダーにスペースがない限り機能するようです。フォルダにスペースが含まれていると、エラーメッセージが表示されます:"コマンドの構文が正しくありません。"
したがって、私のバッチはPULLTEST
という名前のフォルダーでは機能しますが、PULL TEST
という名前のフォルダーでは機能しません。
繰り返しますが、フォルダの移動には必要ありません。ファイルだけです。そして、私はそれがどんなドライブのどんなディレクトリでも働くことを望みます。私が作業する特定のディレクトリはありません。ランダムになります。
以下は、参照用に必要な場合に作成したレジストリファイルです。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Shell\PullFiles]
@="PullFilesUP"
[HKEY_CLASSES_ROOT\Directory\Shell\PullFiles\command]
@="\"C:\\Program Files\\MyBatchs\\PullFiles.bat\" \"%1\""
バッチは、この1つのライナーと同じくらい単純である可能性があります。
@move "%~1\*" "%~1\.."
チルダは、引数値にすでに存在している可能性のある囲み引用符をすべて削除します。余分な引用符のセットが問題の原因でした。
[〜#〜] edit [〜#〜]-ファイルの場合に何をしたいのかは言わない同じ名前のが親ディレクトリにすでに存在します。 MOVEコマンドはバッチファイル内にあるため、デフォルトでは、親フォルダー内のファイルが自動的に上書きされます。スクリプトに指示を求めるプロンプトを表示して、上書きを防ぐ機会を与える場合は、/-Y
オプションが必要です。
@move /-y "%~1\*" "%~1\.."
pushd
コマンドのスペルを間違えました。h
が2つあります。
そして、move
コマンドから%1
を削除する必要があります。ディレクトリにスペースがある場合、move
コマンドは壊れます。
バッチの名前がMoveFiles.bat
であると想定します。それはこのように呼ばれます:
MoveFiles.bat "C:\Test\With Spaces"
バッチ内のパラメーター置換後、次のようになります。
PUSHD "C:\Test\With Spaces"
MOVE ""C:\Test\With Spaces"*.*" ..\
2番目のコマンドには、引用符がネストされているために構文エラーがあります。
このバージョンのバッチは私のために働きます:
PUSHD %1
MOVE *.* ..\