2

私はこれに対する答えを探していましたが、実際に私の問題を解決できるものは見つかりませんでした-私が見つけられなかったこれに似た回答済みの投稿がすでにある場合は申し訳ありません。

第1章)
任意のファイル/フォルダーをUSBフラッシュドライブの特定のフォルダーに(再帰的に)コピーすることになっているバッチファイルがあります。だから、私はこれを書いた:

echo Copying files...
xcopy /s /i %1 \folder\Subfolder\%1

コマンドラインからバッチファイルを呼び出すと膨らみますが、オブジェクト(ファイル/フォルダー)を.bat自体にドラッグすると機能しなくなります。シェルはエラーメッセージを返す必要があると確信していますが、コマンドラインウィンドウが通常どおり瞬時に閉じるため(コマンドラインから実行したため)、それを読み取ることができません。

これを修正するのを手伝ってもらえますか?

第2章)
バッチファイルで2つの状況を区別できるようにしたい:
a)ファイル「C:\Document.doc」を「\folder \ Subfolder」
にコピーするb)ファイル「C:\SomeFolder」をコピーする\ folder \ Subfolder\SomeFolderへ"

私のコードはすでにb)を実行していますが、a)とは区別されません。単一のファイルをコピーしようとすると、次のようになります。命令

xcopy /s /i %1 \Folder\SubFolder\%1

になります

xcopy /s /i C:\Document.doc \Folder\SubFolder\C:\Document.doc

それ以外の

xcopy /s /i C:\Document.doc \Folder\SubFolder\Document.doc

バッチでこれを修正できるようにするにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

1

%1 にはファイルの絶対パスがあるため、ファイルをドラッグすると、CMD に次のように指示されます。

xcopy  /S /i "C:\complete path of file\file.ext" "\folder\Subfolder\C:\complete path of file\file.ext"

必要なものを取得するには、引数パラメーターを使用する必要があります (絶対パス、ファイル名、拡張子、ファイルのサイズ、必要なもの)

このような:

xcopy /s /i "%~1" "\folder\Subfolder\%~nx1"

この例は次のことを行います。

xcopy  /S /i "C:\complete path of file\file.ext" "\folder\Subfolder\filename.ext"

しかし、実際には 2 番目の引数を使用する必要はありません。次のように単純化できます。

xcopy /s /i "%~1" "\folder\Subfolder\"

デフォルトでは、宛先ファイル名は元のファイルと同じ名前になるためです。

于 2012-11-21T21:18:19.473 に答える