2013-05-10 87 views
0

我對批處理腳本很陌生,所以請耐心等待。在Windows中按擴展名移動特定文件批次

我的目標是移動具有相同文件名但擴展名不同的文件;比如我想移動myfile.txt.1myfile.txt.2沒有「接觸」 myfile.txt的 我已經成功地使用通配符*,但它在邏輯上移動甚至文件,我不「不想動。(即myfile.txt的

我的問題是...我想利用for循環計數文件並使用‘計數’變量,而不是*的,但有沒有更直接的方式來實現這個腳本?

附上我的腳本:

cd my_path 
mkdir test 
robocopy "src" "dest" "my_file.*" 
echo The file was moved succesfully !!!! 

回答

1

我覺得應該robocopy能夠處理您的需求。

我本來期望通配符"my_file.txt.*"能夠工作,但有趣的是,儘管缺少尾隨.,它仍然匹配my_file.txt

但添加/xf選項排除了 「未修飾的」 文件名工作對我來說:

robocopy "src" "dest" "my_file.txt.*" /xf "my_file.txt" 
+0

是的,這就是我實際上做的...對於誤解感到抱歉 – HCL02 2013-05-10 21:51:37

+0

有趣的是,你是對的,那仍然不起作用。我編輯了我的答案,添加了'/ xf'選項。 – 2013-05-10 21:58:08

+0

乾杯內特。在包含/ xf批處理按預期工作時。非常感謝。 – HCL02 2013-05-11 19:30:00

0
@ECHO OFF 
SETLOCAL 

SET sourcedir=c:\sourcedir 
SET destdir=c:\destdir 
FOR %%i IN ("%sourcedir%"\*.*) DO (
FOR %%n IN ("%%~ni") DO IF NOT "%%~xn"=="" IF EXIST "%destdir%\%%~nxi" (
    ECHO CAN NOT MOVE "%%~fi" "%destdir%\%%~nxi" 
) ELSE (ECHO MOVE "%%~fi" "%destdir%\%%~nxi") 
) 

GOTO :EOF 

這應該完成的任務AAUI。它還檢測目標目錄中是否存在衝突文件名。在驗證您的測試後,只需從ECHO MOVE中刪除ECHO即可激活。就我個人而言,我會離開ECHO CAN NOT MOVE來報告問題。將其更改爲MOVE可能會覆蓋現有文件。

相關問題