2013-05-10 45 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可能会覆盖现有文件。

相关问题