0

以下の (例) バッチ ファイルを Windows XP SP3 で動作させるのに苦労しています。部分は機能しているようですが、フラグ onを使用しているにもかかわらず、メッセージIF NOT EXISTを受け取り続けます:"Does <path\filename.ext> specify a file name or directory name on the target"/IXCOPY

    @IF NOT EXIST "\\SERVER\PATH\TO\FILE DIR" (
      MKDIR "\\SERVER\PATH\TO\FILE DIR"
      XCOPY "\\SERVER\PATH\TO\ORIG FILE\FILE TEMP.XLSM" "\\SERVER\PATH\TO\FILE DIR\FILE FINAL.XLSM" /I
    ) ELSE (
      XCOPY "\\SERVER\PATH\TO\ORIG FILE\FILE TEMP.XLSM" "\\SERVER\PATH\TO\FILE DIR\FILE FINAL.XLSM" /I
    )

私の理解では、/Iスイッチを使用するとXCOPY、存在しない場合はディレクトリ構造を作成する必要があります-少なくともファイル名を指定しない場合は作成されます。残念ながら、このプロジェクトの要件では、ファイル名を指定する必要があり、毎日自動化されたプロセスで操作されるテンプレート ファイルであるため、元のファイルを保持することはできません。

XCOPYそのため、パスの存在を確認し、存在しない場合はMKDIRコマンドで作成してからファイルをコピーすることで、ディレクトリパスが存在しないという問題を回避しようとしましたが、XCOPYそれでも宛先かどうかを尋ねるプロンプトが表示されますはファイルまたはディレクトリであり、意味がありませんが、何か不足している可能性があります。

明確にするために、これは Windows XP SP3 上にあります。

何か案は?

4

3 に答える 3

0

次のようなことを行う方が簡単な場合があります。

md "\\SERVER\PATH\TO\FILE DIR" 2>NUL
copy "\\SERVER\PATH\TO\ORIG FILE\FILE TEMP.XLSM" "\\SERVER\PATH\TO\FILE DIR\FILE FINAL.XLSM"

最初の 'md' は、ディレクトリの作成を試みます。すでに存在する場合は、STDERR にエラー メッセージを出力します。は2>NULそれを Windows の組み込みの「null デバイス」にリダイレクトします。つまり、エラー メッセージを飲み込むだけです。適切なアクセス許可があると仮定すると、このディレクトリが現在存在していることを確認できます。

copy コマンドはファイルをコピーするだけです。単一のファイルをコピーするために xcopy を使用する必要はありません。これはやり過ぎであり、それがファイルかディレクトリかを尋ねられるなどの小さな落とし穴に満ちています。

于 2013-04-30T20:09:25.493 に答える
0
 echo f|XCOPY "\\SERVER\PATH\TO\ORIG FILE\FILE TEMP.XLSM" "\\SERVER\PATH\TO\FILE DIR\FILE FINAL.XLSM"

ファイルをコピーしてディレクトリを作成する必要があります。「これはファイルです」を指定するオプションが利用可能にされなかった理由はわかりませんが、RTFM -/iスイッチは、複数のファイルをコピーする場合にのみ有効\であり、宛先名の最後の文字として指定するXCOPYと、ターゲットがいずれにせよディレクトリ名であるため、/i冗長なようです。

copyただし、ルートをたどる場合は注意してください。copy /bプレーンcopyは一部のファイルタイプ (.MPG など) を適切にコピーできない可能性があるため、一般的に使用することをお勧めします。最初の ^Z で停止する可能性があります。copy /bしかし、安全に見えます。

于 2013-04-30T21:10:16.710 に答える