在Windows cmd中,我试图将一些.avi文件从子目录移动到父目录。例如,我有一个包含5个子目录的父目录。每个子目录中都有一个.avi文件。让我们说父目录的完整路径是C:\ Grand \ Parent。
以C:\ Grand作为我的工作目录,我尝试了这个,但它没有工作:
move "Parent\*\*.avi" "Parent"
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "delims=" %%a IN (
'dir /b /ad "%sourcedir%"'
) DO (
ECHO(MOVE "%sourcedir%\%%a\*.avi" "%sourcedir%\"
)
echo============
FOR /f "delims=" %%a IN (
'dir /s /b /a-d "%sourcedir%\*.avi" '
) DO (
IF /i "%%~dpa" neq "%sourcedir%\" ECHO(MOVE "%%~fa" "%sourcedir%\"
)
echo============
FOR /f "delims=" %%a IN ('dir /s /b /a-d "%sourcedir%\*.avi"') DO (
MOVE "%%~fa" "%sourcedir%\" 2>NUL >nul
)
GOTO :EOF
这里有三种不同的方法 - 警告第三种实际执行move
。
第一个严格地将源下面的一个级别移动到目标。
第二个做同样的事情,但是所有级别都是"变平"树。
第三种方法使用脏方法 - 在指示cmd
移动文件时禁止错误。
答案 1 :(得分:0)
在命令行中使用以下选项之一:
如果"*.avi"
中已经存在名为"C:\Grand\Parent"
的文件,则此人可能会抱怨:
for /f "usebackq delims=" %f in (`dir /s /b /a-d "C:\Grand\Parent\*.avi"`) do move "%~f" "C:\Grand\Parent"
此人不处理"C:\Grand\Parent"
中已经存在的文件:
for /f "usebackq delims=" %f in (`dir /b /ad "C:\Grand\Parent\*"`) do move "%~f\*.avi" "C:\Grand\Parent"