1

我对批量编写脚本非常陌生,所以请多多包涵。

我的目标是移动文件名相同但扩展名不同的文件;例如我想移动myfile.txt.1myfile.txt.2而不“触摸” myfile.txt 我已经设法使用通配符 * 但它在逻辑上甚至移动了我不想移动的文件。(即myfile.txt

我的问题是......我正在考虑使用for 循环来计算文件并使用“count”变量而不是 * ,但是有没有更直接的方法来实现这个脚本?

附上我的脚本:

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

2 回答 2

1

我认为robocopy应该能够满足您的需求。

我本来希望通配符"my_file.txt.*"可以工作,但有趣my_file.txt的是,尽管没有尾随它仍然匹配.

但是添加/xf排除“未修饰”文件名的选项对我有用:

robocopy "src" "dest" "my_file.txt.*" /xf "my_file.txt"
于 2013-05-10T21:41:09.850 回答
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从 中删除即可激活。ECHO MOVE就个人而言,我会保持ECHO CAN NOT MOVE原样报告问题。将其更改为MOVE可能会覆盖现有文件。

于 2013-05-11T03:48:20.527 回答