2017-02-16 24 views
0

api-build009.jarというファイルがあり、複数のディレクトリに存在するとします。一括コピーし、同じ名前のディレクトリにファイル名を変更する(CLI/PowerShell)

D:\InstallDir\subdir1\ 
D:\InstallDir\subdir2\subdir21\ 
D:\InstallDir\subdir3\ 
D:\InstallDir\subdir4\subdir41\ 
D:\InstallDir\subdir5\ 
D:\InstallDir\subdir6\subdir61\subdir62\ 
D:\InstallDir\subdir7\ 
D:\InstallDir\subdir8\ 

元のファイルと同じディレクトリにファイルをバックアップ(名前を変更)する必要があります。上記のすべてのディレクトリ(この例では8)に対してこの操作を実行し、元のファイルをコピーしてからapi-build009.jar.bakに名前を変更します。

D:\InstallDir\subdir1\api-build009.jar.bak 
D:\InstallDir\subdir2\subdir21\api-build009.jar.bak 
D:\InstallDir\subdir3\api-build009.jar.bak 
D:\InstallDir\subdir4\subdir41\api-build009.jar.bak 
D:\InstallDir\subdir5\api-build009.jar.bak 
D:\InstallDir\subdir6\subdir61\subdir62\api-build009.jar.bak 
D:\InstallDir\subdir7\api-build009.jar.bak 
D:\InstallDir\subdir8\api-build009.jar.bak 

WindowsのCLIまたはPowerShellを使用してこのプロセスを実行するにはどうすればよいですか?

ありがとうございます。

答えて

1

a fileを書き込むと、同じファイルのように聞こえて、同じフォルダにバックアップthe fileと書き込みます。これらの異なるバージョンまたは同じファイルのコピーですか?
これらのスクリプトは、.bak拡張子と同じ名前と場所にファイルをコピーします

バッチ

@Echo off 
PushD "D:\InstallDir" 
For /f "delims=" %%A in (
    'Dir /B/S api-build009.jar' 
) Do Echo Copy "%%~fA" "%%~fA.bak" 
Popd 

PowerShellの

Get-ChildItem -Path D:\InstallDir -File -Filter api-build009.jar| 
    ForEach { Copy-Item $_.FullName -Destination "$($_.Fullname).bak" -whatif} 

出力はOKバッチ/ -whatif中でechoを削除するに見える場合スクリプト

+0

これは素晴らしいです。ありがとうございました。似たようなことに取り組んでいましたが、これはもっと良く見えます。私の記憶をリフレッシュできますか?ここの '〜'の目的は何ですか? '%%〜fA'は正確に何をしますか? – user3621633

+1

@ user3621633これはforの修飾子です。for /?を参照してください。 '〜f'は%% Aをフルネームに展開します。これは'〜dpnx'と同じドライブパス名と拡張子です。 – LotPings

+0

優れています。私は教育に感謝します。ご協力いただきありがとうございます。これはバッチまたはPowerShellであるべきである。 :) – user3621633

関連する問題