440

これは非常に単純なようで、適切なフラグを見落としているだけかもしれませんが、1つのコマンドで、あるディレクトリから別のディレクトリにファイルをコピーし、宛先ディレクトリで名前を変更するにはどうすればよいでしょうか。これが私のコマンドです:

if exist "bin\development\whee.config.example"
  if not exist "TestConnectionExternal\bin\Debug\whee.config"
    xcopy "bin\development\whee.config.example"
          "TestConnectionExternal\bin\Debug\whee.config"

毎回次のように促されます。

TestConnectionExternal \ bin \ Debug \ whee.configは、ターゲット上のファイル名またはディレクトリ名を指定しますか(F =ファイル、D =ディレクトリ)?

このプロンプトを抑制したい。答えは常にFです。

4

23 に答える 23

661

私が使う

echo f | xcopy /f /y srcfile destfile

それを回避するために。

于 2010-06-10T20:45:49.167 に答える
237

を使用しないでください。代わりにxcopy使用してくださいcopy。この問題は発生しません。

xcopy通常、複数のファイル/フォルダーの再帰コピーを実行する場合、またはそれが提供する検証/プロンプト機能が必要な場合に使用されます。単一ファイルのコピーの場合、copyコマンドは問題なく機能します。

于 2010-06-10T20:45:41.530 に答える
189

別のオプションは、宛先ワイルドカードを使用することです。これは、ソースファイル名と宛先ファイル名が同じである場合にのみ機能することに注意してください。したがって、これはOPの特定の例を解決しませんが、共有する価値があると思いました。

例えば:

xcopy /y "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\*" 

ファイルまたはディレクトリの入力を求めずに、宛先ディレクトリにファイル「whee.config.example」のコピーを作成します。

更新:@chapluckが述べたように:

に変更でき"* "ます"[newFileName].*"。ファイル拡張子は保持されますが、名前を変更できます。またはもっとハッキー:"[newFileName].[newExt]*"拡張子を変更するには

于 2013-02-09T13:02:07.207 に答える
102

XCOPYには、文書化されていない機能があります。使用できます:

xcopy "bin \ development \ whee.config.example" "c:\ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config *"

今日だけテストしました。:-)

于 2014-09-25T08:49:19.967 に答える
73

http://technet.microsoft.com/en-us/library/bb491035.aspxにアクセスするだけです

主な問題は次のとおりです。...宛先に既存のディレクトリが含まれておらず、円記号()で終わっていない場合、次のメッセージが表示されます。

宛先はターゲット上のファイル名またはディレクトリ名を指定しますか(F =ファイル、D =ディレクトリ)?

/ iコマンドラインオプションを使用すると、このメッセージを抑制できます。これにより、ソースが複数のファイルまたはディレクトリである場合、xcopyは宛先がディレクトリであると見なします。

しばらく時間がかかりましたが、必要なのはRTFMだけです。

于 2013-08-09T00:11:56.693 に答える
27

したがって、これには簡単な修正があります。確かに厄介ですが、機能します。新しいファイル(ファイル名)がすでに存在する場合、xcopyは宛先がディレクトリまたはファイルであるかどうかを確認するように求めません。xcopyコマンドの前に新しいファイル名への単純なエコーを付けると、空のファイルが上書きされます。例

echo.>newfile.txt
xcopy oldfile.txt newfile.txt /Y
于 2012-10-10T13:24:30.623 に答える
4

これはビルズの回答からです。

他の人のために本当に明確にするためだけに。

ある場所から別の場所に1つのファイルをコピーしていて、完全なディレクトリ構造を作成する場合は、次のコマンドを使用します。

xcopy "C:\Data\Images\2013\08\12\85e4a707-2672-481b-92fb-67ecff20c96b.jpg" "C:\Target Data\\Images\2013\08\12\85e4a707-2672-481b-92fb-67ecff20c96b.jpg\" 

はい、ファイル名の最後に円記号を付けてください。ファイルかディレクトリかは尋ねられません。ソースにはファイルが1つしかないため、ファイルであると見なされます。

于 2013-08-20T08:04:55.553 に答える
3

xcopy src dest /I

REM This assumes dest is a folder and will create it, if it doesnt exists

于 2013-07-22T19:54:54.443 に答える
2

元の質問に戻る:

 xcopy "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\whee.config"

2つのコマンドで実行できます。例:

mkdir "c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."
xcopy "bin\development\whee.config.example" "c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\"

宛先ファイルのパスに「\..」を追加するだけで、宛先ディレクトリがまだ存在しない場合は作成されます。この場合

"c:\mybackup\TestConnectionExternal\bin\Debug\"

これは、存在しないディレクトリの親ディレクトリです

"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."

少なくともWIN7の場合、 mkdirはディレクトリが

"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\"

本当に存在します。

于 2013-11-11T16:25:10.033 に答える
2

同様の問題が発生しましたが、コメントを抑制して別の宛先ファイル名を使用したかったため、robocopyとxcopyの両方が役に立ちませんでした。見つけた

type filename.txt > destfolder\destfilename.txt

私の要件に従って動作します。

于 2016-01-14T17:57:41.117 に答える
2

ターゲットの最後に*が付いたXCOPYは、宛先に存在するかどうかに関係なくファイルをコピーします。ターゲットの最後に\が付いたXCOPYは、宛先に存在するかどうかに関係なく、フォルダーとコンテンツをコピーします。

あるいは

ファイルのロボフォームソースデストファイルフォルダのロボフォームソースデスト

于 2018-01-24T00:30:21.227 に答える
2

ファイルが宛先に存在しないか、(新しい名前で)存在するが古い場合にのみ、新しい名前でファイルをコピーしようとすると、同じ問題が発生しました。*解決策は、宛先ファイル名の最後にcharを追加することです。例:

xcopy "C:\src\whee.config.txt" "C:\dest\bee.config.txt*" /D /Y
于 2020-06-01T08:05:30.223 に答える
1

またはrobocopyの代わりに提案します。コマンドとして、またはクライアントまたはサーバーのGUIで使用されます。ネットワークの一時停止に耐性があり、ファイル属性によるコピーのコピー時にファイル属性を無視することを選択できます。ああ、それはマルチコアマシンをサポートしているので、ファイルは順番にではなく、互いに「並列」ではるかに高速にコピーされます。 MSTechNetで見つけることができます。copyxcopyrobocopy

于 2013-02-20T23:13:21.007 に答える
1

ファイルだけをコピーして、宛先で名前を変更したい場合の正しい方法は次のとおりです。

xcopy / f / y "bin \ development \ example.exe" "TestConnectionExternal \ bin \ Debug \ NewName.exe *"

そしてそれはうまくいくだろう

于 2017-05-14T11:52:26.270 に答える
1

大きなファイルを複製するには、/Jスイッチを備えたxopyが適しています。この場合、ファイルの場合はFを、ディレクトリの場合はDをパイプするだけです。また、将来の参照用にジョブを配列に保存することもできます。例えば:

$MyScriptBlock = {
    Param ($SOURCE, $DESTINATION) 
    'F' | XCOPY $SOURCE $DESTINATION /J/Y 
    #DESTINATION IS FILE, COPY WITHOUT PROMPT IN DIRECT BUFFER MODE
}
JOBS +=START-JOB -SCRIPTBLOCK $MyScriptBlock -ARGUMENTLIST $SOURCE,$DESTIBNATION
$JOBS | WAIT-JOB | REMOVE-JOB

少し変更を加えたChandに感謝します: https ://stackoverflow.com/users/3705330/chand

于 2017-12-28T19:19:59.680 に答える
1

DとFの競合をスキップするには、宛先パスの最後にアスタリスク(*)を付けます。

例:

xcopy "compressedOutput.xml" "../../Execute Scripts / APIAutomation / Libraries / rerunlastfailedbuild.xml *"

于 2019-09-04T09:41:48.710 に答える
0

ファイルをコピーするときは、xcopyの代わりにcopyを使用してください。

例: "bin \ development \ whee.config.example" "TestConnectionExternal \ bin \ Debug\whee.config"をコピーします

于 2010-10-28T18:07:39.597 に答える
0

回避策、ReName ...を使用し、Cryptic Nameに名前を付けてから、適切な名前に名前を変更します。

C:

CD "C:\ Users \ Public \ Documents \ My Web Sites \ AngelFire〜Zoe \"

XCopy / D / I / V / Y "C:\ Users \ Public \ Documents \ My Web Sites \ HostGator〜ZoeBeans \ cop.htm"

レン"cop.htm""christ-our-passover.htm"

于 2013-06-06T18:13:13.737 に答える
0

xcopyを使用すると、1つのファイルを指定したフォルダーにコピーできますが、宛先名を定義することはできません。宛先名が必要な場合は、コピーする前に名前を変更してください。

ren "bin \ development \ whee.config.example" whee.config

xcopy / R / Y "bin \ development \ whee.config" "TestConnectionExternal \ bin \ Debug \"

于 2015-06-08T17:38:12.370 に答える
0

単一のファイルを操作するときは、両方のコマンドを使用します。

ファイルを別の既存のディレクトリにコピーするには、次を使用します。copy

copy srcPath\srcFile existingDir\newFile

既存のファイルをにコピーして新しいディレクトリを作成するには、次を使用します。xcopy

xcopy srcPath\srcFile newDirectoryPath\newFile

xcopy'ファイルまたはディレクトリ'プロンプトを抑制するには、応答をエコーし​​ます。したがって、ファイルコピーの場合はエコーインしfます。

echo f | xcopy srcPath\srcFile newDirectoryPath\newFile

注フラグ/yは両方のコマンドで機能し、既存の宛先ファイルを上書きする確認を抑制します。


MSドキュメント:コピーxcopy

于 2021-08-18T22:39:59.520 に答える
-1

実際にファイル名を変更しているわけではないので、宛先からファイル名を取り出すことができ、質問はありません。

xcopy bin\development\whee.config.example TestConnectionExternal\bin\Debug\  /Y

このアプローチは、宛先ディレクトリが存在することが保証されている場合、およびソースがファイルまたはディレクトリである可能性がある場合にうまく機能します。

于 2011-09-05T08:23:39.960 に答える
-1

xxxxxxxxxxxxは、ターゲット上のファイル名またはディレクトリ名を指定しますか?

(F = file, D = directory)? D

if a File : (echo F)
if a Directory (echo D)
于 2019-10-08T07:19:48.490 に答える
-2

常にファイルであると指定することはできません。xcopyの他の機能が必要ない場合は、通常の機能を使用してみませんcopyか?

于 2010-06-10T20:45:09.037 に答える