これは非常に単純なようですし、 適切なフラグ を見逃しているだけかもしれませんが、あるコマンドで、あるディレクトリから別のディレクトリにファイルをコピーして、コピー先ディレクトリで名前を変更する方法これが私のコマンドです:
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
です。
xcopy
を使用せず、代わりにcopy
を使用してください。この問題は発生しません。
xcopy
は通常、複数のファイル/フォルダの再帰的コピーを実行するとき、またはそれが提供する検証/プロンプト機能が必要なときに使用されます。単一ファイルコピーの場合、copy
コマンドは問題なく動作します。
私が使う
echo f | xcopy /f /y srcfile destfile
それを回避するために。
別のオプションは、宛先ワイルドカードを使用することです。これは、移動元と移動先のファイル名が同じ場合にのみ機能することに注意してください。そのため、これはOPの特定の例を解決するものではありませんが、共有する価値があると思いました。
例えば:
xcopy /y "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\*"
ファイルまたはディレクトリを指定せずに、コピー先ディレクトリにファイル「whee.config.example」のコピーを作成します。
更新 :@chapluckで述べたように:
"* "
を"[newFileName].*"
に変更することができます。それはファイル拡張子を保持しますが、名前を変更することを可能にします。もっとハッキー:拡張子を変更するための"[newFileName].[newExt]*"
XCOPYには文書化されていない機能があります。あなたが使用することができます:
xcopy "bin\development\whee.config.example" "c:\ mybackup\TestConnectionExternal\bin\Debug\whee.config *"
今日だけテストしました。 :-)
http://technet.Microsoft.com/ja-jp/library/bb491035.aspx にアクセスするだけです。
これが主な問題です。「... Destinationに既存のディレクトリが含まれておらず、 がバックスラッシュ ()で終わっていない場合、次のメッセージが表示されます。
destinationはターゲット上のファイル名またはディレクトリ名を指定しますか(F =ファイル、D =ディレクトリ)?
このメッセージを表示しないようにするには、/ iコマンドラインオプションを使用します。これにより、ソースが複数のファイルまたはディレクトリの場合、xcopyは宛先をディレクトリと見なします。
少し時間がかかりましたが、必要なのはRTFMだけです。
だから、これのための簡単な修正があります。それは確かに厄介ですが、うまくいきます。 xcopyは、新しいファイル(filename)がすでに存在する場合、宛先がディレクトリかファイルかを確認するように求めません。 xcopyコマンドの前に新しいファイル名を単純にエコーすると、空のファイルが上書きされます。例
echo.>newfile.txt
xcopy oldfile.txt newfile.txt /Y
これはBillsの回答からです。
ただ他の人たちにとってはっきりしていることです。
_ one _ ファイルをある場所から別の場所に _と_ にコピーする場合は、次のコマンドを使用して完全なディレクトリ構造を作成します。
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つしかないため、ファイルと見なします。
ターゲットの末尾に*が付いているファイルがコピー先に存在するかどうかにかかわらずコピーするXCOPYターゲットの末尾に\が付いているファイルとコピー先に存在するかどうかにかかわらずXCOPY
あるいは
ロボフォームソースファイルの保存先ファイルロボフォームソースファイルの保存先
xcopy src dest /I
REM This assumes dest is a folder and will create it, if it doesnt exists
元の質問に戻ります。
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\"
本当に存在します。
大きなファイルを複製する場合は、/ 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
robocopy
やcopy
ではなくxcopy
をお勧めします。コマンドとして、またはクライアントまたはサーバー上のGUIで使用されます。ネットワークの一時停止に対する耐性があり、ファイル属性によるコピーのコピー時にファイル属性を無視することを選択できます。ああ、それはマルチコアマシンをサポートしているので、ファイルは順番にではなく、お互いに "パラレル"ではるかに速くコピーされます。 robocopy
はMS TechNetにあります。
私は同様の問題を抱えていたし、robocopyとxcopyの両方は役に立ちませんでした。コメントを抑制し、異なる保存先ファイル名を使いたいからです。私は見つけた
type filename.txt > destfolder\destfilename.txt
私の要件に従って作業しています。
xcopyは単一のファイルを指定されたフォルダにコピーすることを可能にしますそれはあなたが目的地の名前を定義することを可能にしません。コピー先の名前が必要な場合は、コピーする前に名前を変更するだけです。
ren "bin\development\whee.config.example" whee.config
xcopy/R/Y "bin\development\whee.config" "TestConnectionExternal\bin\Debug \"
ファイルをコピーするときは、xcopyの代わりにcopyを使用してください。
例えば"bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\whee.config"をコピーします。
実際にはファイル名を変更していないので、宛先からファイル名を取り出すことができ、質問はありません。
xcopy bin\development\whee.config.example TestConnectionExternal\bin\Debug\ /Y
この方法は、宛先ディレクトリが存在することが保証されている場合、およびソースがファイルまたはディレクトリである場合がある場合に適しています。
ファイルだけをコピーしてコピー先で名前を変更したい場合は、次のようにします。
xcopy/f/y "bin\development\example.exe" "TestConnectionExternal\bin\Debug\NewName.exe *"
そしてそれはうまくいくよ
回避策として、ReName ...を使用してCryptic Nameという名前を付けてから、適切な名前にReNameします。
子:
CD "C:\ Users\Public\Documents\My Webサイト\ AngelFire〜Zoe \"
XCopy/D/I/V/Y "C:\ Users\Public\Documents\My Webサイト\ HostGator〜ZoeBeans\cop.htm"
Ren "cop.htm" "christ-our-passover.htm"