iT邦幫忙

1

修正批次檔以處理重覆檔名

日前在搜尋勒索病毒相關資訊時
看到這篇 ptt 的[閒聊] 綁架病毒對策:簡易監控小腳本
原理很簡單
但是在眾人束手無策之時
倒也是個可行的方法

受到這個腳本的啟發
我想到另一個預防勒索病毒的方法
簡單說
「就是備份所有的文件檔,但是要改副檔名」
這是建立在「勒索病毒只加密文件檔(副檔名)」的前提下

目前批次檔進度如下:

for /R C:\ %%F IN (*.doc) DO copy "%%F" "d:\backup\%%~nF.d0c"
for /R C:\ %%F IN (*.xls) DO copy "%%F" "d:\backup\%%~nF.x1s"
for /R C:\ %%F IN (*.ppt) DO copy "%%F" "d:\backup\%%~nF.pp7"
for /R C:\ %%F IN (*.jpg) DO copy "%%F" "d:\backup\%%~nF.jp9"
for /R C:\ %%F IN (*.png) DO copy "%%F" "d:\backup\%%~nF.pn9"
for /R C:\ %%F IN (*.mp4) DO copy "%%F" "d:\backup\%%~nF.m94"

大致上可以正常執行
但是思緒縝密的各位大大
一定已經想到了「不同目錄下檔名重覆」的問題

沒錯
目前我碰到的就是這個問題
請教各位高手
有沒有什麼好方法可以避免「因檔名重覆而只備份其中一個檔案」的情形?

看更多先前的討論...收起先前的討論...
用 XCopy 好像可以連路徑一起複製過來,如下
for /R C:\ %%F IN (*.xls) DO xcopy "%%F" "d:\backup%%~pF%%~nF.x1s"
但是執行的時侯會要求我選擇(F=檔案, D=目錄)
不知道要加那個參數才可以避掉這問題
蟹老闆 iT邦大師 1 級 ‧ 2016-06-06 22:56:30 檢舉
試一下
for /R C:\ %%F IN (*.xls) DO xcopy "%%F" "d:\backup%%~pnxF"
蟹老闆 iT邦大師 1 級 ‧ 2016-06-06 22:57:05 檢舉
用COPY就可以了
謝謝回覆
但出現「系統找不到指定的路徑」錯誤
(應是沒有目的地路徑之故)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
蟹老闆
iT邦大師 1 級 ‧ 2016-06-06 23:27:17
最佳解答

抱歉,沒測試就PO
for /R d:\ %%F IN (*.xls) DO xcopy /f "%%~fF" "d:\12%%~pF"
這個試過了,OK的

看更多先前的回應...收起先前的回應...

麻煩再改一個地方
副檔名要改成自訂的 x1s 而不是原本的 xls

蟹老闆 iT邦大師 1 級 ‧ 2016-06-07 08:13:18 檢舉

沒有問題也是可以的

for /R d:\ %%F IN (*.xls) DO Echo f|xcopy /f "%%~fF" "d:\12%%~pnF.x1s "

謝謝回覆
測試後回報結果

ctipde iT邦高手 1 級 ‧ 2016-06-07 15:22:42 檢舉

我是win10 執行for /R d:\ %%F IN (.xls) DO Echo f|xcopy /f "%%~fF" "d:\12%%~pnF.x1s " 會造成無盡迴圈

測試 OK 版如下

for /R d:\ %%F IN (*.ppt) DO Echo f|xcopy /f "%%~fF" "h:\backup%%~pnF.99t"
for /R d:\ %%F IN (*.doc) DO Echo f|xcopy /f "%%~fF" "h:\backup%%~pnF.d0c"
for /R d:\ %%F IN (*.xls) DO Echo f|xcopy /f "%%~fF" "h:\backup%%~pnF.x1s"
for /R d:\ %%F IN (*.png) DO Echo f|xcopy /f "%%~fF" "h:\backup%%~pnF.pn9"
for /R d:\ %%F IN (*.mpg) DO Echo f|xcopy /f "%%~fF" "h:\backup%%~pnF.mp9"
for /R d:\ %%F IN (*.mp4) DO Echo f|xcopy /f "%%~fF" "h:\backup%%~pnF.m94"
for /R d:\ %%F IN (*.mov) DO Echo f|xcopy /f "%%~fF" "h:\backup%%~pnF.m0v"
for /R d:\ %%F IN (*.jpg) DO Echo f|xcopy /f "%%~fF" "h:\backup%%~pnF.j9g"

TO:ctitpe
最前面的「來源磁碟機」和後面的「目的磁碟機」不可相同,
否則會無窮迴圈

typo -> ctitpe -> ctipde, Sorry

可否再加一個要求
第二次執行時會有檔案重覆的確認(Yes/No/All)
有沒有辦法避免?
謝謝

蟹老闆 iT邦大師 1 級 ‧ 2016-06-07 20:02:37 檢舉

會造成無盡迴圈

如果是系統磁碟有些指令會需要系統管理者權限,您可以按右鍵以系統管理者權限試試

第二次執行時會有檔案重覆的確認(Yes/No/All)

可以加上 xcopy /y /f

for /R d:\ %%F IN (*.jpg) DO Echo f|xcopy /f /y "%%~fF" "h:\backup%%~pnF.j9g"

讚啦
從此真是高枕無憂了
蟹蟹蟹老闆

蟹老闆 iT邦大師 1 級 ‧ 2016-06-08 03:07:51 檢舉

您客氣啦,也受您很多的幫助

我要發表回答

立即登入回答