2017-02-16 105 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} 

如果輸出看起來不錯刪除該批次中的echo/-whatif劇本

+0

這太好了。謝謝。我正在研究類似的東西,但這看起來好多了。你能否刷新我的記憶 - 這裏'〜'的目的是什麼? 「%%〜fA」究竟做了什麼? – user3621633

+1

@ user3621633這是for var修飾符,請參閱'for /?'。 '〜f'將%% A擴展爲全名,與'〜dpnx'一樣,也就是驅動器路徑名和擴展名。 – LotPings

+0

非常好。我很欣賞教育。再次感謝你的幫助。這應該可以做到這一點,無論是批處理還是PowerShell。 :) – user3621633

相關問題